কম্পিউটার টিউটোরিয়াল

Boto3 ব্যবহার করে AWS Secret Manager-এ বাইনারি/এনক্রিপ্টেড ফরম্যাট থেকে প্লেইন টেক্সট হিসেবে সিক্রেট কী পাওয়া


সমস্যা: পাইথনে boto3 লাইব্রেরি ব্যবহার করে AWS Secret Manager-এ থাকা বাইনারি/এনক্রিপ্টেড ফরম্যাট থেকে সিক্রেট কী প্লেইন টেক্সট হিসেবে পাওয়া।

পদ্ধতি/অ্যালগরিদম

  • ধাপ ১: boto3 এবং botocore এক্সেপশন ইম্পোর্ট করুন এক্সেপশন হ্যান্ডল করার জন্য।

  • ধাপ ২: secret_stored_location আবশ্যিক প্যারামিটার। এটি সিক্রেট সংরক্ষণের জায়গা।

  • ধাপ ৩: boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করুন। নিশ্চিত করুন region_name ডিফল্ট প্রোফাইলে আছে। না থাকলে সেশন তৈরি করার সময় সিদ্ধা region_name পাস করুন।

  • ধাপ ৪: secretmanager-এর জন্য AWS ক্লায়েন্ট তৈরি করুন।

  • ধাপ ৫: get_secret_value কল করুন এবং secret_stored_location কে SecretId হিসেবে পাস করুন।

  • ধাপ ৬: যাচাই করুন এটি প্লেইন টেক্সট কিনা অথবা এনক্রিপ্টেড।

  • ধাপ ৭: যদি এনক্রিপ্টেড হয়, তবে base64.b64decode ব্যবহার করে বাইনারি মান ডিকোড করার ফাংশন কল করুন।

  • ধাপ ৮: এটি প্রদত্ত লোকেশনের সকল সিক্রেট ডিক্রিপ্ট করা মোডে, অর্থাৎ প্লেইন টেক্সট হিসেবে রিটার্ন করে।

  • ধাপ ৯: মান রিট্রিভ করার সময় যদি কোনো সমস্যা হয় তবে জেনেরিক এক্সেপশন হ্যান্ডল করুন।

উদাহরণ কোড

AWS Secret Manager-এ থেকে ডিক্রিপ্ট করা প্লেইন টেক্সট সিক্রেট পেতে নিচের কোডটি ব্যবহার করুন:

import boto3
import base64
from botocore.exceptions import ClientError

def get_decrypted_secret_details(secret_stored_location):
    session = boto3.session.Session()
    s3_client = session.client('secretmanager')
    try:
        response = s3_client.get_secret_value(SecretId=secret_stored_location)
        if not ('SecretString' in response):
            decoded_secret_values = base64.b64decode(response['SecretBinary'])
            return decoded_secret_values
        return response['SecretString']
    except ClientError as e:
        raise Exception("boto3 client error in get_decrypted_secret_details: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_decrypted_secret_details: " + e.__str__())

a = get_decrypted_secret_details('/secrets/aws')
print(a)

আউটপুট

{"user":"SERVICE_USER","accesskey":"I**************"}

  1. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে সব ডেটাবেসের ডিটেইলস পাওয়া

  2. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে একটি কানেকশনের ডিটেইলস পাওয়া

  3. Boto3 ব্যবহার করে AWS Glue Data Catalog থেকে একটি ক্লাসিফায়ারের ডিটেইলস পাওয়া

  4. Boto3 ব্যবহার করে মাইগ্রেশন অপারেশনের স্ট্যাটাস পাওয়া