Utiliser des AWS Secrets Manager secrets dans les AWS Lambda fonctions - 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 des AWS Secrets Manager secrets dans les AWS Lambda fonctions

Vous pouvez utiliser l'extension Lambda AWS Parameters and Secrets pour récupérer et mettre en cache des 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 payant APIs, 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 le Parameter Store, consultez Intégration de Parameter Store avec les extensions Lambda (langue Français non garantie) dans le Guide de l'utilisateur AWS Systems Manager .

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 à l'environnement Lambda un point de terminaison HTTP local et le port localhost 2773. 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 pour ARM, vous devez utiliser l'architecture arm64 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 prend en charge 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) et Asie-Pacifique (Sydney).

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

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 de la Clé gérée par AWS aws/secretsmanager, le rôle d'exécution doit également disposer d'une kms:Decrypt autorisation pour la clé KMS.

Pour utiliser l'extension Lambda AWS Parameters and Secrets
  1. Ajoutez la AWS couche nommée AWS Parameters and Secrets Lambda Extension à 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 AWS CLI pour ajouter la couche, vous avez besoin de l'ARN de l'extension. Pour une liste de ARNs, voir AWS Parameters and Secrets Lambda Extension ARNs dans le guide de l'AWS Systems Manager 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 HTTP GET suivantes :

    • Afin de récupérer un secret pour secretId, utilisez l'ARN ou 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 pour secretId, utilisez l'ARN ou le nom du secret, et pour versionStage, utilisez le staging label (étiquette ide transit).

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Pour récupérer une version secrète spécifique par ID, pour secretId, utilisez l'ARN ou le nom du 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 serveur HTTP 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 clients HTTP que l'extension utilise pour envoyer des requêtes au 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

Durée de vie d'un secret dans le cache, en 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

Durée de vie d'un paramètre dans le cache, en 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.