समस्या कथन: AWS Secrets Manager में विशिष्ट स्थान से सभी सीक्रेट कुंजियों को हटाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें।
समस्या हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1: boto3 और botocore एक्सेप्शन आयात करें ताकि एक्सेप्शन संभाले जा सकें।
चरण 2: secret_stored_location आवश्यक पैरामीटर है।
चरण 3: boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि डिफ़ॉल्ट प्रोफ़ाइल में region_name उल्लिखित है। यदि नहीं, तो सत्र बनाते समय स्पष्ट रूप से region_name पास करें।
चरण 4: secretmanager के लिए AWS क्लाइंट बनाएं।
चरण 5: delete_secret कॉल करें और secret_stored_location को SecretId के रूप में पास करें।
चरण 6: यह हटाए गए सीक्रेट का मेटाडेटा लौटाता है।
चरण 7: सीक्रेट हटाते समय यदि कुछ गलत होता है तो सामान्य एक्सेप्शन को संभालें।
उदाहरण कोड
AWS Secrets Manager में सीक्रेट्स हटाने के लिए निम्न कोड का उपयोग करें:
import boto3
from botocore.exceptions import ClientError
def delete_secret_details(secret_stored_location):
session = boto3.session.Session()
s3_client = session.client('secretmanager')
try:
response = s3_client.delete_secret(SecretId=secret_stored_location)
return response
except ClientError as e:
raise Exception("boto3 client error in delete_secret_details: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in delete_secret_details: " + e.__str__())
a = delete_secret_details('/secrets/aws')
print(a)
आउटपुट
{'ARN': 'arn:aws:secretsmanager:us-east-1:***************:secret:/secrets/aws-wr1Aj6', 'Name': '/secrets/aws', 'DeletionDate': datetime.datetime(2021, 5, 3, 15, 26, 19, 898000, tzinfo=tzlocal()), '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}}
महत्वपूर्ण सुधार नोट
मूल कोड में त्रुटि: उदाहरण कोड में s3_client.create_secret का उपयोग किया गया है, लेकिन यह s3_client.delete_secret होना चाहिए। उपरोक्त कोड में इसे ठीक कर दिया गया है।
हटाने का व्यवहार
ForceDeleteWithoutRecovery=False (डिफ़ॉल्ट): सीक्रेट को रिकवरी विंडो (7-30 दिन) के बाद हटाने के लिए निर्धारित करता है। इस दौरान
restore_secretसे पुनर्प्राप्त किया जा सकता है।ForceDeleteWithoutRecovery=True: सीक्रेट को तुरंत और स्थायी रूप से हटा देता है (पुनर्प्राप्ति असंभव)।
RecoveryWindowInDays: कस्टम रिकवरी विंडो सेट करें (7-30 दिन)।
उदाहरण बलपूर्वक हटाने के साथ
response = s3_client.delete_secret(
SecretId=secret_stored_location,
ForceDeleteWithoutRecovery=True
)
IAM अनुमति
secretsmanager:DeleteSecret अनुमति आवश्यक है।