使用 Python Amazon SDK 获取 Secrets Manager 密钥值 - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Python Amazon SDK 获取 Secrets Manager 密钥值

在应用程序中,您可以通过调用GetSecretValueBatchGetSecretValue在任一应用程序中检索您的秘密 Amazon SDKs。不过,我们建议您通过使用客户端缓存来缓存您的密钥值。缓存密钥可以提高速度并降低成本。

对于 Python 应用程序,请使用 Secrets Manager 基于 Python 的缓存组件或直接使用 get_secret_valuebatch_get_secret_value 调用 SDK。

以下代码示例演示如何使用 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