समस्या कथन: AWS Secrets Manager में प्लेन टेक्स्ट के रूप में सीक्रेट कुंजी बनाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें।
समस्या हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1: boto3 और botocore एक्सेप्शन आयात करें ताकि एक्सेप्शन संभाले जा सकें।
चरण 2: secret_stored_location और secret_key_pair आवश्यक पैरामीटर हैं। यह वह स्थान है जहां सीक्रेट्स दिए गए कुंजी-मान मान के साथ सहेजे जाते हैं। सुनिश्चित करें कि secret_key_pair स्ट्रिंग के रूप में लिखा गया है, डिक्शनरी के रूप में नहीं। उदाहरण: '{key:pair}'
चरण 3: boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में region_name उल्लिखित है। यदि नहीं, तो सत्र बनाते समय स्पष्ट रूप से region_name पास करें।
चरण 4: secretmanager के लिए AWS क्लाइंट बनाएं।
चरण 5: create_secret कॉल करें और secret_stored_location को Name के रूप में और secret_key_pair को SecretString पैरामीटर के रूप में पास करें।
चरण 6: यह जोड़े गए सीक्रेट का मेटाडेटा लौटाता है।
चरण 7: सीक्रेट बनाते समय यदि कुछ गलत होता है तो सामान्य एक्सेप्शन को संभालें।
उदाहरण कोड
AWS Secrets Manager में सीक्रेट्स बनाने के लिए निम्न कोड का उपयोग करें:
import boto3
from botocore.exceptions import ClientError
def create_secret_details(secret_stored_location, secret_key_pair: str):
session = boto3.session.Session()
s3_client = session.client('secretmanager')
try:
response = s3_client.create_secret(Name=secret_stored_location, SecretString=secret_key_pair)
return response
except ClientError as e:
raise Exception("boto3 client error in create_secret_details: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in create_secret_details: " + e.__str__())
details = '{"user_test":"test"}'
a = create_secret_details('/secrets/aws', details)
print(a)
आउटपुट
{'ARN': 'arn:aws:secretsmanager:us-east-1:***************:secret:/secrets/aws-wr1Aj6', 'Name': '/secrets/aws', 'VersionId': 'fcdc1b5b-2a35-4d12-9d84-65d529651d2e', 'ResponseMetadata': {'RequestId': 'b32fe48d**************ab', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 03 Apr 2021 09:40:48 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '197', 'connection': 'keep-alive', 'x-amzn-requestid': *********************************}, 'RetryAttempts': 0}}
महत्वपूर्ण सुधार नोट
मूल कोड में त्रुटि: उदाहरण में get_decrypted_secret_details फ़ंक्शन को कॉल किया गया है जो परिभाषित नहीं है। इसे create_secret_details होना चाहिए। उपरोक्त कोड में इसे ठीक कर दिया गया है।
महत्वपूर्ण पैरामीटर
Name: सीक्रेट का अनुकूल नाम (पथ-शैली नाम समर्थित, जैसे
/prod/db/password)SecretString: प्लेनटेक्स्ट सीक्रेट मान (JSON स्ट्रिंग अनुशंसित)
SecretBinary: बाइनरी सीक्रेट डेटा के लिए (SecretString के बजाय)
Description: वैकल्पिक विवरण
Tags: वैकल्पिक टैग सूची
KmsKeyId: एन्क्रिप्शन के लिए कस्टम KMS कुंजी (डिफ़ॉल्ट AWS-प्रबंधित कुंजी का उपयोग करता है)
IAM अनुमति
secretsmanager:CreateSecret अनुमति आवश्यक है।