समस्या कथन: AWS Secrets Manager में विशिष्ट स्थान से सीक्रेट कुंजियों को अपडेट करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें।
समस्या हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1: boto3 और botocore एक्सेप्शन आयात करें ताकि एक्सेप्शन संभाले जा सकें।
चरण 2: secret_stored_location और secret_key_pair आवश्यक पैरामीटर हैं। सुनिश्चित करें कि secret_key_pair स्ट्रिंग के रूप में लिखा गया है, डिक्शनरी के रूप में नहीं।
चरण 3: boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में region_name उल्लिखित है। यदि नहीं, तो सत्र बनाते समय स्पष्ट रूप से region_name पास करें।
चरण 4: secretmanager के लिए AWS क्लाइंट बनाएं।
चरण 5: update_secret कॉल करें और secret_stored_location को SecretId के रूप में और secret_key_pair को SecretString के रूप में पास करें।
चरण 6: यह अपडेट किए गए सीक्रेट का मेटाडेटा लौटाता है।
चरण 7: सीक्रेट अपडेट करते समय यदि कुछ गलत होता है तो सामान्य एक्सेप्शन को संभालें।
उदाहरण कोड
AWS Secrets Manager में सीक्रेट्स अपडेट करने के लिए निम्न कोड का उपयोग करें:
import boto3
from botocore.exceptions import ClientError
def update_secret_details(secret_stored_location, secret_key_pair):
session = boto3.session.Session()
s3_client = session.client('secretmanager')
try:
response = s3_client.update_secret(SecretId=secret_stored_location, SecretString=secret_key_pair)
return response
except ClientError as e:
raise Exception("boto3 client error in update_secret_details: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in update_secret_details: " + e.__str__())
a = update_secret_details('/secrets/aws', '{"user_test1":"test"}')
print(a)
आउटपुट
{'ARN': 'arn:aws:secretsmanager:us-east-1:***************:secret:/secrets/aws-wr1Aj6', 'Name': '/secrets/aws', 'VersionId': 'f5308bed-7c23-4d47-a32b-8f2a5f044e53', '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}}
महत्वपूर्ण अंतर: put_secret_value vs update_secret
put_secret_value: मौजूदा सीक्रेट में नया संस्करण जोड़ता है। यदि सीक्रेट मौजूद नहीं है तो विफल होता है।
update_secret: सीक्रेट मान अपडेट करता है (नया संस्करण बनाता है)। यदि सीक्रेट मौजूद नहीं है तो
CreateSecretसमतुल्य व्यवहार के साथ बना सकता है (कॉन्फ़िगरेशन के आधार पर)।दोनों नया संस्करण बनाते हैं और
AWSCURRENTस्टेज लेबल को नए संस्करण में ले जाते हैं।पिछला संस्करण
AWSPREVIOUSस्टेज लेबल प्राप्त करता है।
IAM अनुमति
secretsmanager:UpdateSecret अनुमति आवश्यक है।