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 imagesPARAMETERS_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_PORT
variable 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'arm64
architecture 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 besoinkms:Decrypt
d'une autorisation pour la KMS clé.
Pour utiliser le plugin AWS Paramètres et secrets de l'extension Lambda
-
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.
-
Accordez des autorisations au rôle d'exécution Lambda pour pouvoir accéder aux secrets :
-
Autorisation
secretsmanager:GetSecretValue
pour le secret. Consultez Exemple : Autorisation pour récupérer des valeurs de secrets individuels. -
(Facultatif) Si le secret est chiffré avec 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 besoinkms:Decrypt
d'une autorisation pour la KMS clé. -
Vous pouvez utiliser le contrôle d'accès basé sur les attributs (ABAC) avec le rôle Lambda pour permettre un accès plus précis aux secrets du compte. Pour plus d’informations, consultez Exemple : Contrôler l'accès aux secrets à l'aide de balises et Exemple : Limiter l'accès aux identités avec des balises qui correspondent à celles des secrets.
-
-
Configurez le cache avec des variables d'environnement Lambda.
-
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 surAWS_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')}
-
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, pour
secretId
, 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, pour
secretId
, 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, pour
secretId
, 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
etSECRETS_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 surdebug
pour voir la configuration de cache. La valeur par défaut estinfo
. 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.