Python
 Computer >> コンピューター >  >> プログラミング >> Python

Boto3を使用してAWS Secrets Managerの特定の場所からシークレットを削除する方法


課題

Pythonのboto3ライブラリを使用して、AWS Secrets Managerの特定の場所に保存されたシークレットを削除する方法を解説します。

解決のためのアプローチとアルゴリズム

  1. ステップ1: 例外処理のために、boto3botocoreの例外クラスをインポートします。

  2. ステップ2: secret_stored_location(シークレットの保存先)は必須パラメータです。

  3. ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時にregion_nameを明示的に渡す必要があります。

  4. ステップ4: secretmanager向けのAWSクライアントを作成します。

  5. ステップ5: delete_secretを呼び出し、secret_stored_locationSecretIdとして渡します。

  6. ステップ6: 削除されたシークレットのメタデータが返却されます。

  7. ステップ7: シークレットの削除中に問題が発生した場合に備えて、汎用的な例外処理を実装します。

サンプルコード

AWS Secrets Managerからシークレットを削除するには、以下のコードを使用します。

import boto3
from botocore.exceptions import ClientError

def delete_secret_details(secret_stored_location):
    session = boto3.session.Session()
    secretsmanager_client = session.client('secretmanager')
    try:
        response = secretsmanager_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)

コードのポイント

  • シークレットを削除する際にはdelete_secretを使用します(create_secretではなく)。
  • delete_secretはデフォルトで7〜30日(初期値は30日)の復元期間を設けてから完全に削除されます。この期間内であればrestore_secretを使って復元できます。
  • 即座に完全削除したい場合は、ForceDeleteWithoutRecovery=Trueを指定します。ただし、その場合は復元が不可能になる点に注意してください。

出力結果

{'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}}

出力の見方

  • ARN: 削除対象シークレットを一意に識別するAmazon Resource Name。
  • Name: シークレットの名前(ここでは /secrets/aws)。
  • DeletionDate: シークレットが完全に削除される予定日時。
  • HTTPStatusCode: リクエストが正常に処理されたことを示す200番台のステータスコード。

  1. Boto3を使ってAWS Glueデータカタログからクローラーを削除する方法

    本記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に作成されたGlueクローラーを削除する手順を解説します。AWS Glueのクローラーは、S3などのデータソースをスキャンしてデータカタログにテーブル定義を作成する重要なコンポーネントですが、不要になったクローラーは適切に削除することでリソースを整理できます。 課題 − Pythonのboto3ライブラリを使って、自分のアカウントに作成されたクローラーを削除する。 例 − アカウントに作成された「Portfolio」という名前のクローラーを削除する。 問題解決のアプローチとアルゴリズム ステップ1 − 例外処理のため

  2. PythonのBoto3ライブラリを使ってAWS S3からオブジェクトを削除する方法

    この記事では、PythonのBoto3ライブラリを使用して、AWS S3バケットからオブジェクトを削除する方法を解説します。例: S3の「Bucket_1/testfolder」から「test.zip」を削除します。解決のためのアプローチとアルゴリズムステップ1 − boto3とbotocoreの例外処理モジュール(ClientError)をインポートします。ステップ2 − 関数の引数としてS3ファイルパス(s3_files_path)を受け取ります。ステップ3 − 渡されたパスが「s3://bucket_name/key」というAWS形式に準拠しているかどうかを検証します。ステップ4 − b