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

Boto3を使ってAWS Secrets Managerのシークレットにタグを追加する方法

課題: Pythonのboto3ライブラリを使用して、AWS Secrets Managerのシークレットにタグを追加します。

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

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

  • ステップ2: 関数にはsecret_location(シークレットの識別子)とtags_dict(タグ情報)という2つの必須パラメータを用意します。tags_dictは {"Key":"Value",...} の形式で指定します。

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

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

  • ステップ5: tag_resource関数を呼び出し、SecretIdパラメータにsecret_locationを、Tagsパラメータにtags_dictを渡します。

  • ステップ6: レスポンスメタデータが返却され、対象リソースにタグが追加されます。

  • ステップ7: タグ追加処理中に予期しない問題が発生した場合に備え、汎用的な例外ハンドリングを実装します。

サンプルコード

以下のコードでタグを追加できます。

import boto3
from botocore.exceptions import ClientError

def add_tags_in_resource(secret_location, tags_dict):
    session = boto3.session.Session()
    client = session.client('secretmanager')
    try:
        response = client.tag_resource(SecretId=secret_location, Tags=tags_dict)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in add_tags_in_resource: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in add_tags_in_resource: " + e.__str__())

tags_dict = [{"Key":"secret-test","Value":"test"}]
print(add_tags_in_resource("secrets/aws", tags_dict))

実行結果

{'ResponseMetadata': {'RequestId': 'c9f418b0-***************-fb96', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 08:04:54 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '27', 'connection': 'keep-alive', 'x-amzn-requestid': 'c9f418b0-******************-fb96'}, 'RetryAttempts': 0}}

レスポンス内のHTTPStatusCodeが「200」であれば、タグの追加は正常に完了しています。
なお、AWS Secrets Managerでは1つのシークレットに対して最大50個のタグを付与できるため、環境名やプロジェクト名などのメタデータ管理に活用すると、リソースの検索やコスト配分の整理に役立ちます。

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

    AWS Glueのデータカタログ上で管理しているワークフローは、Pythonのboto3ライブラリを使えば簡単に削除できます。本記事では、実際のコード例とともに、その手順をわかりやすく解説します。やりたいことユーザーがAWSデータカタログからワークフローを削除したいケースを想定します。例:自分のアカウントから「test」という名前のワークフローを削除する。課題:Pythonのboto3ライブラリを使用して、アカウント内に存在するワークフローを削除すること。解決のための手順・アルゴリズムステップ1:例外処理のために、boto3およびbotocore.exceptionsをインポートします。ステッ

  2. Boto3を使ってAWS Glueのジョブを削除する方法を徹底解説

    AWS Glueは、ETL(抽出・変換・ロード)処理を簡単に実行できるサーバーレスのデータ統合サービスです。本記事では、Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成済みのGlueジョブを削除する方法を、ステップごとにわかりやすく解説します。 課題 Pythonのboto3ライブラリを使って、AWSアカウント内に作成されたGlueジョブを削除します。 例: アカウント内に作成された「transfer_from_s3」というGlueジョブを削除します。 解決のためのアプローチとアルゴリズム ステップ1: 例外処理のために、boto3とbotocoreの例外モジュール