Obter um valor de segredo do Secrets Manager usando a SDK da AWS para Python - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Obter um valor de segredo do Secrets Manager usando a SDK da AWS para Python

Em aplicações, você pode recuperar seus segredos chamando GetSecretValue ou BatchGetSecretValue em qualquer um dos SDKs da AWS. No entanto, recomendamos armazenar em cache seus valores de segredos usando o cache do lado do cliente. Armazenar segredos em cache melhora a velocidade e reduz os seus custos.

Para aplicações Python, use o componente de cache baseado em Python do Secrets Manager ou chame o SDK diretamente com get_secret_value ou batch_get_secret_value.

Os exemplos de código a seguir mostram como usar o GetSecretValue.

Permissões obrigatórias: 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