本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Python Amazon SDK 获取 Secrets Manager 密钥值
在应用程序中,您可以通过调用GetSecretValue
或BatchGetSecretValue
在任一应用程序中检索您的秘密 Amazon SDKs。不过,我们建议您通过使用客户端缓存来缓存您的密钥值。缓存密钥可以提高速度并降低成本。
对于 Python 应用程序,请使用 Secrets Manager 基于 Python 的缓存组件或直接使用 get_secret_value
batch_get_secret_value
以下代码示例演示如何使用 GetSecretValue
。
所需权限:secretsmanager:GetSecretValue
""" Purpose Shows how to use the AWS SDK for Python (Boto3) with AWS Secrets Manager to get a specific of secrets that match a specified name """ import boto3 import logging from get_secret_value import GetSecretWrapper # Configure logging logging.basicConfig(level=logging.INFO) def run_scenario(secret_name): """ Retrieve a secret from AWS Secrets Manager. :param secret_name: Name of the secret to retrieve. :type secret_name: str """ try: # Validate secret_name if not secret_name: raise ValueError("Secret name must be provided.") # Retrieve the secret by name client = boto3.client("secretsmanager") wrapper = GetSecretWrapper(client) secret = wrapper.get_secret(secret_name) # Note: Secrets should not be logged. return secret except Exception as e: logging.error(f"Error retrieving secret: {e}") raise class GetSecretWrapper: def __init__(self, secretsmanager_client): self.client = secretsmanager_client def get_secret(self, secret_name): """ Retrieve individual secrets from AWS Secrets Manager using the 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 secret_name: The name of the secret fetched. :type secret_name: str """ try: get_secret_value_response = self.client.get_secret_value( SecretId=secret_name ) logging.info("Secret retrieved successfully.") return get_secret_value_response["SecretString"] except self.client.exceptions.ResourceNotFoundException: msg = f"The requested secret {secret_name} was not found." logger.info(msg) return msg except Exception as e: logger.error(f"An unknown error occurred: {str(e)}.") raise