Utiliser AWS Secrets Manager secrets dans AWS Lambda functions - AWS Secrets Manager

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser AWS Secrets Manager secrets dans AWS Lambda functions

Vous pouvez utiliser le plugin AWS Paramètres et secrets Extension Lambda pour récupérer et mettre en cache AWS Secrets Manager secrets dans les fonctions Lambda sans utiliser de. SDK Il est plus rapide de récupérer un secret mis en cache que de le récupérer à partir de Secrets Manager. L'appel de Secrets Manager étant payantAPIs, l'utilisation d'un cache peut vous permettre de réduire vos coûts. L'extension peut récupérer les secrets de Secrets Manager et les paramètres du Parameter Store. Pour plus d'informations sur Parameter Store, consultez la section Intégration de Parameter Store aux extensions Lambda dans le AWS Systems Manager Guide de l'utilisateur.

Une extension Lambda est un processus complémentaire qui s'ajoute aux capacités d'une fonction Lambda. Pour de plus amples informations, veuillez consulter Extensions Lambda dans le Guide du développeur Lambda. Pour plus d'informations sur l'utilisation de l'extension dans une image de conteneur, consultez Working with Lambda layers and extensions in container images (français non garanti). Lambda enregistre les informations d'exécution relatives à l'extension ainsi qu'à la fonction à l'aide d'Amazon CloudWatch Logs. Par défaut, l'extension enregistre une quantité minimale d'informations dans CloudWatch. Pour journaliser plus d'informations, définissez la variable d'environnement PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL sur debug.

Pour fournir le cache en mémoire pour les paramètres et les secrets, l'extension expose un point de HTTP terminaison local, le port localhost 2773, à l'environnement Lambda. Vous pouvez configurer le port en définissant la PARAMETERS_SECRETS_EXTENSION_HTTP_PORTvariable d'environnement.

Lambda instancie des instances distinctes correspondant au niveau de simultanéité requis par votre fonction. Chaque instance est isolée et conserve son propre cache local de vos données de configuration. Pour plus d'informations sur les instances Lambda et la simultanéité, consultez la rubrique Gestion de la simultanéité réservée Lambda du Guide du développeur Lambda.

Pour ajouter l'extension pourARM, vous devez utiliser l'arm64architecture de votre fonction Lambda. Pour en savoir plus, consultez la rubrique Architectures de l'ensemble des instructions Lambda du Guide du développeur Lambda. L'extension est disponible ARM dans les régions suivantes : Asie-Pacifique (Mumbai), USA Est (Ohio), Europe (Irlande), Europe (Francfort), Europe (Zurich), USA Est (Virginie du Nord), Europe (Londres), Europe (Espagne), Asie-Pacifique (Tokyo), USA Ouest (Oregon), Asie-Pacifique (Singapour), Asie-Pacifique (Hyderabad) et Asie-Pacifique (Sydney).

L'extension utilise un AWS client. Pour plus d'informations sur la configuration du AWS client, voir la référence des paramètres dans le AWS SDKet guide de référence sur les outils. Si votre fonction Lambda s'exécute dans unVPC, vous devez créer un VPC point de terminaison afin que l'extension puisse appeler Secrets Manager. Pour de plus amples informations, veuillez consulter Utilisation d'un point de terminaison d'un VPC AWS Secrets Manager.

Autorisations requises :

  • Le rôle d'exécution Lambda doit être secretsmanager:GetSecretValue autorisé à accéder au secret.

  • Si le secret est chiffré à l'aide d'une clé gérée par le client au lieu du Clé gérée par AWS aws/secretsmanager, le rôle d'exécution a également besoin kms:Decrypt d'une autorisation pour la KMS clé.

Pour utiliser le plugin AWS Paramètres et secrets de l'extension Lambda
  1. Ajoutez le AWS couche nommée AWS Paramètres et secrets Extension Lambda de votre fonction. Pour obtenir des instructions, consultez la section Ajouter des couches aux fonctions dans le guide du développeur Lambda. Si vous utilisez le plugin AWS CLI pour ajouter la couche, vous avez besoin ARN de l'extension. Pour une liste desARNs, voir AWS Paramètres et secrets Extension ARNs Lambda dans le AWS Systems Manager Guide de l'utilisateur.

  2. Accordez des autorisations au rôle d'exécution Lambda pour pouvoir accéder aux secrets :

  3. Configurez le cache avec des variables d'environnement Lambda.

  4. Pour récupérer les secrets du cache de l'extension, vous devez d'abord ajouter le X-AWS-Parameters-Secrets-Token à l'en-tête de la requête. Définissez le jeton sur AWS_SESSION_TOKEN, qui est fourni par Lambda pour toutes les fonctions en cours d'exécution. L'utilisation de cet en-tête indique que l'appelant se trouve dans l'environnement Lambda.

    L'exemple Python suivant montre comment ajouter l'en-tête.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Pour récupérer un secret dans la fonction Lambda, utilisez l'une des requêtes suivantes : HTTP GET

    • Pour récupérer un secret, poursecretId, utilisez le nom ARN ou le nom du secret.

      GET: /secretsmanager/get?secretId=secretId
    • Pour récupérer la valeur secrète précédente ou une version spécifique par étiquette intermédiaire, poursecretId, utilisez le nom ARN ou le secret, et pourversionStage, utilisez l'étiquette intermédiaire.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Pour récupérer une version secrète spécifique par ID, poursecretId, utilisez le nom ARN ou le secret, et pourversionId, utilisez l'ID de version.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    Exemple Récupérer un secret (Python)

    L'exemple Python suivant montre comment récupérer un secret et analyser le résultat à l'aide de json.loads.

    secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \ <secret_name> r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret

AWS Paramètres et secrets Variables d'environnement de l'extension Lambda

Vous pouvez configurer l'extension avec les variables d'environnement suivantes.

Pour plus d'informations sur l'utilisation des variables d'environnement, consultez Utilisation des variables d'environnement Lambda dans le Guide du développeur Lambda.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Définissez-la sur true pour mettre en cache les paramètres et les secrets. Définissez-la sur false pour ne pas les mettre en cache. La valeur par défaut est true.

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

Nombre maximum de secrets et de paramètres à mettre en cache. La valeur doit être comprise entre 0 et 1 000. Une valeur égale à 0 signifie qu'il n'y a pas de mise en cache. Cette variable est ignorée si la valeur de SSM_PARAMETER_STORE_TTL et SECRETS_MANAGER_TTL est 0. La valeur par défaut est 1 000.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

Port du HTTP serveur local. La valeur par défaut est 2773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

Niveau de journalisation fourni par l'extension : debug, info, warn, error ounone. Définissez-la sur debug pour voir la configuration de cache. La valeur par défaut est info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Nombre maximum de connexions pour les HTTP clients que l'extension utilise pour envoyer des demandes à Parameter Store ou à Secrets Manager. Il s'agit d'une configuration par client. La valeur par défaut est 3.

SECRETS_MANAGER_TIMEOUT_MILLIS

Délai d'expiration des requêtes adressées à Secrets Manager, en millisecondes. Une valeur égale à 0 signifie qu'il n'y a pas de délai d'expiration. La valeur par défaut est 0.

SECRETS_MANAGER_TTL

TTLd'un secret dans le cache en quelques secondes. Une valeur égale à 0 signifie qu'il n'y a pas de mise en cache. La valeur maximale est de 300 secondes. Cette variable est ignorée si la valeur de PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE est 0. La valeur par défaut est de 300 secondes.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Délai d'expiration des requêtes adressées au Parameter Store, en millisecondes. Une valeur égale à 0 signifie qu'il n'y a pas de délai d'expiration. La valeur par défaut est 0.

SSM_PARAMETER_STORE_TTL

TTLd'un paramètre dans le cache en quelques secondes. Une valeur égale à 0 signifie qu'il n'y a pas de mise en cache. La valeur maximale est de 300 secondes. Cette variable est ignorée si la valeur de PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE est 0. La valeur par défaut est de 300 secondes.