Python AWS SDK を使用して Secrets Manager のシークレット値をバッチ取得する - AWS Secrets Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Python AWS SDK を使用して Secrets Manager のシークレット値をバッチ取得する

次のコード例は、Secrets Manager のシークレットの値をバッチ取得する方法を示しています。

必要な許可:

  • secretsmanager:BatchGetSecretValue

  • 取得するシークレットごとに secretsmanager:GetSecretValue のアクセス許可が必要です。

  • フィルターを使用する場合は、secretsmanager:ListSecrets も必要です。

アクセス許可ポリシーの例については、「例: バッチでシークレット値のグループを取得するためのアクセス許可」を参照してください。

重要

取得しようとしているグループ内の個別シークレットを取得するためのアクセス許可を拒否する VPCE ポリシーを設定している場合、BatchGetSecretValue はシークレット値を返さず、エラーが返されます。

class BatchGetSecretsWrapper: def __init__(self, secretsmanager_client): self.client = secretsmanager_client def batch_get_secrets(self, filter_name): """ Retrieve multiple secrets from AWS Secrets Manager using the batch_get_secret_value API. This function assumes the stack mentioned in the source code README has been successfully deployed. This stack includes 7 secrets, all of which have names beginning with "mySecret". :param filter_name: The full or partial name of secrets to be fetched. :type filter_name: str """ try: secrets = [] response = self.client.batch_get_secret_value( Filters=[{"Key": "name", "Values": [f"{filter_name}"]}] ) for secret in response["SecretValues"]: secrets.append(json.loads(secret["SecretString"])) if secrets: logger.info("Secrets retrieved successfully.") else: logger.info("Zero secrets returned without error.") return secrets except self.client.exceptions.ResourceNotFoundException: msg = f"One or more requested secrets were not found with filter: {filter_name}" logger.info(msg) return msg except Exception as e: logger.error(f"An unknown error occurred:\n{str(e)}.") raise