Récupération des données de configuration à l'aide de l'extension AWS AppConfig Agent Lambda - AWS AppConfig

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.

Récupération des données de configuration à l'aide de l'extension AWS AppConfig Agent Lambda

Une AWS Lambda extension est un processus complémentaire qui augmente les capacités d'une fonction Lambda. Une extension peut démarrer avant qu'une fonction ne soit invoquée, s'exécuter en parallèle avec une fonction et continuer à s'exécuter après le traitement de l'appel de fonction. En substance, une extension Lambda est comme un client qui s'exécute en parallèle à un appel Lambda. Ce client parallèle peut s'interfacer avec votre fonction à tout moment au cours de son cycle de vie.

Si vous utilisez des indicateurs de AWS AppConfig fonctionnalité ou d'autres données de configuration dynamiques dans une fonction Lambda, nous vous recommandons d'ajouter l'extension Agent AWS AppConfig Lambda en tant que couche à votre fonction Lambda. Cela simplifie les indicateurs de fonctionnalité d'appel, et l'extension elle-même inclut les meilleures pratiques qui simplifient l'utilisation AWS AppConfig tout en réduisant les coûts. La réduction des coûts résulte de la diminution du nombre d'appels d'API au AWS AppConfig service et de la réduction des temps de traitement des fonctions Lambda. Pour plus d'informations sur les extensions Lambda, consultez la section Extensions Lambda dans le Guide du développeur.AWS Lambda

Note

AWS AppConfig la tarification est basée sur le nombre de fois qu'une configuration est appelée et reçue. Vos coûts augmentent si votre Lambda effectue plusieurs démarrages à froid et récupère fréquemment de nouvelles données de configuration.

Cette rubrique inclut des informations sur l'extension AWS AppConfig Agent Lambda et la procédure de configuration de l'extension pour qu'elle fonctionne avec votre fonction Lambda.

Comment ça marche

Si vous gérez les configurations d'une fonction Lambda sans extensions Lambda, vous devez configurer votre fonction Lambda pour recevoir des mises à jour de configuration en intégrant les actions et API. AWS AppConfig StartConfigurationSessionGetLatestConfiguration

L'intégration de l'extension AWS AppConfig Agent Lambda à votre fonction Lambda simplifie ce processus. L'extension se charge d'appeler le AWS AppConfig service, de gérer un cache local de données récupérées, de suivre les jetons de configuration nécessaires pour les prochains appels de service et de vérifier périodiquement les mises à jour de configuration en arrière-plan. Le schéma suivant montre comment cela fonctionne.

Schéma du fonctionnement de l' AWS AppConfig extension Agent Lambda
  1. Vous configurez l'extension AWS AppConfig Agent Lambda en tant que couche de votre fonction Lambda.

  2. Pour accéder à ses données de configuration, votre fonction appelle l' AWS AppConfig extension sur un point de terminaison HTTP exécuté surlocalhost:2772.

  3. L'extension gère un cache local des données de configuration. Si les données ne se trouvent pas dans le cache, l'extension appelle AWS AppConfig pour obtenir les données de configuration.

  4. Dès réception de la configuration par le service, l'extension la stocke dans le cache local et la transmet à la fonction Lambda.

  5. AWS AppConfig L'extension Agent Lambda vérifie régulièrement les mises à jour de vos données de configuration en arrière-plan. Chaque fois que votre fonction Lambda est invoquée, l'extension vérifie le temps écoulé depuis qu'elle a récupéré une configuration. Si le temps écoulé est supérieur à l'intervalle d'interrogation configuré, l'extension appelle AWS AppConfig pour vérifier les données récemment déployées, met à jour le cache local en cas de modification et réinitialise le temps écoulé.

Note
  • 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 section Gestion de la simultanéité pour une fonction Lambda.

  • Le temps nécessaire pour qu'une modification de configuration apparaisse dans une fonction Lambda, après le déploiement d'une configuration mise à jour depuis AWS AppConfig, dépend de la stratégie de déploiement que vous avez utilisée pour le déploiement et de l'intervalle d'interrogation que vous avez configuré pour l'extension.

Avant de commencer

Avant d'activer l'extension AWS AppConfig Agent Lambda, procédez comme suit :

Ajout de l'extension AWS AppConfig Agent Lambda

Pour utiliser l'extension AWS AppConfig Agent Lambda, vous devez l'ajouter à votre Lambda. Cela peut être fait en ajoutant l'extension AWS AppConfig Agent Lambda à votre fonction Lambda sous forme de couche ou en activant l'extension sur une fonction Lambda en tant qu'image de conteneur.

Note

L' AWS AppConfig extension est indépendante de l'environnement d'exécution et prend en charge tous les environnements d'exécution.

Ajouter l'extension AWS AppConfig Agent Lambda à l'aide d'une couche et d'un ARN

Pour utiliser l'extension AWS AppConfig Agent Lambda, vous devez l'ajouter à votre fonction Lambda sous forme de couche. Pour plus d'informations sur la façon d'ajouter une couche à votre fonction, consultez la section Configuration des extensions dans le Guide du AWS Lambda développeur. Le nom de l'extension dans la AWS Lambda console est AWS- AppConfig -Extension. Notez également que lorsque vous ajoutez l'extension en tant que couche à votre Lambda, vous devez spécifier un Amazon Resource Name (ARN). Dans l'une des listes suivantes, choisissez un ARN correspondant à la plate-forme et à l' Région AWS endroit où vous avez créé le Lambda.

Si vous souhaitez tester l'extension avant de l'ajouter à votre fonction, vous pouvez vérifier qu'elle fonctionne en utilisant l'exemple de code suivant.

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name' config = urllib.request.urlopen(url).read() return config

Pour le tester, créez une nouvelle fonction Lambda pour Python, ajoutez l'extension, puis exécutez la fonction Lambda. Après avoir exécuté la fonction Lambda, celle-ci renvoie la configuration que vous avez spécifiée pour le chemin http://localhost:2772. AWS AppConfig Pour plus d'informations sur la création d'une fonction Lambda, voir Création d'une fonction Lambda avec la console dans le Guide du développeur.AWS Lambda

Pour ajouter l'extension AWS AppConfig Agent Lambda en tant qu'image de conteneur, consultez. Utilisation d'une image de conteneur pour ajouter l'extension AWS AppConfig Agent Lambda

Configuration de l'extension AWS AppConfig Agent Lambda

Vous pouvez configurer l'extension en modifiant les variables d' AWS Lambda environnement suivantes. Pour plus d'informations, consultez la section Utilisation de variables d' AWS Lambda environnement dans le Guide du AWS Lambda développeur.

Préextraction des données de configuration

La variable d'environnement AWS_APPCONFIG_EXTENSION_PREFETCH_LIST peut améliorer le temps de démarrage de votre fonction. Lorsque l'extension AWS AppConfig Agent Lambda est initialisée, elle récupère la configuration spécifiée avant que AWS AppConfig Lambda ne commence à initialiser votre fonction et à appeler votre gestionnaire. Dans certains cas, les données de configuration sont déjà disponibles dans le cache local avant que votre fonction ne les demande.

Pour utiliser la fonctionnalité de prélecture, définissez la valeur de la variable d'environnement sur le chemin correspondant à vos données de configuration. Par exemple, si votre configuration correspond à une application, à un environnement et à un profil de configuration nommés respectivement « my_application », « my_environment » et « my_configuration_data », le chemin serait. /applications/my_application/environments/my_environment/configurations/my_configuration_data Vous pouvez spécifier plusieurs éléments de configuration en les répertoriant sous forme de liste séparée par des virgules (si le nom d'une ressource inclut une virgule, utilisez l'ID de la ressource au lieu de son nom).

Accès aux données de configuration depuis un autre compte

L'extension AWS AppConfig Agent Lambda peut récupérer les données de configuration d'un autre compte en spécifiant un rôle IAM qui accorde des autorisations sur les données. Pour configurer cela, procédez comme suit :

  1. Dans le compte utilisé AWS AppConfig pour gérer les données de configuration, créez un rôle doté d'une politique de confiance qui accorde au compte exécutant la fonction Lambda l'accès aux appconfig:GetLatestConfiguration actions appconfig:StartConfigurationSession et, ainsi qu'aux ARN partiels ou complets correspondant aux ressources de AWS AppConfig configuration.

  2. Dans le compte exécutant la fonction Lambda, ajoutez la variable d'AWS_APPCONFIG_EXTENSION_ROLE_ARNenvironnement à la fonction Lambda avec l'ARN du rôle créé à l'étape 1.

  3. (Facultatif) Si nécessaire, un identifiant externe peut être spécifié à l'aide de la variable d'AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_IDenvironnement. De même, un nom de session peut être configuré à l'aide de la variable d'AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAMEenvironnement.

Note

Notez les informations suivantes.

  • L'extension AWS AppConfig Agent Lambda ne peut récupérer les données que d'un seul compte. Si vous spécifiez un rôle IAM, l'extension ne sera pas en mesure de récupérer les données de configuration du compte sur lequel la fonction Lambda est exécutée.

  • AWS Lambda enregistre les informations relatives à l'extension AWS AppConfig Agent Lambda et à la fonction Lambda à l'aide d'Amazon Logs. CloudWatch

Variable d'environnement Détails Valeur par défaut

AWS_APPCONFIG_EXTENSION_HTTP_PORT

Cette variable d'environnement indique le port sur lequel s'exécute le serveur HTTP local hébergeant l'extension.

2772

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

Cette variable d'environnement indique quels journaux AWS AppConfig spécifiques à une extension sont envoyés à Amazon CloudWatch Logs pour une fonction. Les valeurs valides ne distinguant pas les majuscules et minuscules sont les suivantes : debuginfo,, warnerror, et. none Debug inclut des informations détaillées, y compris des informations temporelles, sur l'extension.

info

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

Cette variable d'environnement configure le nombre maximal de connexions utilisées par l'extension pour récupérer les configurations. AWS AppConfig

3

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

Cette variable d'environnement contrôle la fréquence à laquelle l'extension interroge AWS AppConfig une configuration mise à jour en quelques secondes.

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

Cette variable d'environnement contrôle la durée maximale, en millisecondes, pendant laquelle l'extension attend une réponse AWS AppConfig lors de l'actualisation des données dans le cache. Si AWS AppConfig elle ne répond pas dans le délai spécifié, l'extension ignore cet intervalle d'interrogation et renvoie les données mises en cache précédemment mises à jour.

3000

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

Cette variable d'environnement indique les données de configuration que l'extension commence à récupérer avant l'initialisation de la fonction et l'exécution du gestionnaire. Cela permet de réduire considérablement le temps de démarrage à froid de la fonction.

Aucun
AWS_APPCONFIG_EXTENSION_PROXY_HEADERS Cette variable d'environnement spécifie les en-têtes requis par le proxy référencé dans la variable d'AWS_APPCONFIG_EXTENSION_PROXY_URLenvironnement. La valeur est une liste d'en-têtes séparés par des virgules. Chaque en-tête utilise le formulaire suivant :
"header: value"
Aucun
AWS_APPCONFIG_EXTENSION_PROXY_URL Cette variable d'environnement indique l'URL du proxy à utiliser pour les connexions entre l' AWS AppConfig extension et Services AWS. HTTPSet les HTTP URL sont prises en charge. Aucun
AWS_APPCONFIG_EXTENSION_ROLE_ARN Cette variable d'environnement spécifie l'ARN du rôle IAM correspondant à un rôle qui doit être assumé par l' AWS AppConfig extension pour récupérer la configuration. Aucun
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID Cette variable d'environnement spécifie l'identifiant externe à utiliser conjointement avec l'ARN du rôle assumé. Aucun
AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME Cette variable d'environnement spécifie le nom de session à associer aux informations d'identification pour le rôle IAM assumé. Aucun
AWS_APPCONFIG_EXTENSION_SERVICE_REGION Cette variable d'environnement indique une région alternative que l'extension doit utiliser pour appeler le AWS AppConfig service. Lorsqu'elle n'est pas définie, l'extension utilise le point de terminaison de la région actuelle. Aucun

AWS_APPCONFIG_EXTENSION_MANIFEST

Cette variable d'environnement configure l' AWS AppConfig agent pour tirer parti de fonctionnalités supplémentaires par configuration, telles que la récupération de plusieurs comptes et l'enregistrement de la configuration sur disque. Vous pouvez saisir l'une des valeurs suivantes :

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

Pour de plus amples informations sur l'utilisation de ces modèles, consultez Fonctionnalités de récupération supplémentaires.

true

AWS_APPCONFIG_EXTENSION_WAIT_ON_MANIFEST

Cette variable d'environnement configure l' AWS AppConfig agent pour qu'il attende que le manifeste soit traité avant de terminer le démarrage.

true

Récupération d'un ou de plusieurs indicateurs à partir d'une configuration d'indicateurs de fonctionnalité

Pour les configurations d'indicateurs de fonctionnalités (configurations de typeAWS.AppConfig.FeatureFlags), l'extension Lambda vous permet de récupérer un seul indicateur ou un sous-ensemble d'indicateurs dans une configuration. La récupération d'un ou deux indicateurs est utile si votre Lambda n'a besoin que de quelques indicateurs du profil de configuration. Les exemples suivants utilisent Python.

Note

La possibilité d'appeler un indicateur de fonctionnalité unique ou un sous-ensemble d'indicateurs dans une configuration n'est disponible que dans l'extension AWS AppConfig Agent Lambda version 2.0.45 et supérieure.

Vous pouvez récupérer les données AWS AppConfig de configuration à partir d'un point de terminaison HTTP local. Pour accéder à un indicateur spécifique ou à une liste d'indicateurs, utilisez le paramètre de ?flag=flag_name requête pour un profil AWS AppConfig de configuration.

Pour accéder à un seul drapeau et à ses attributs

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name' config = urllib.request.urlopen(url).read() return config

Pour accéder à plusieurs drapeaux et à leurs attributs

import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two' config = urllib.request.urlopen(url).read() return config

Affichage des journaux de AWS AppConfig l'extension Lambda de l'agent Lambda

Vous pouvez consulter les données des journaux de l'extension AWS AppConfig Agent Lambda dans les AWS Lambda journaux. Les entrées du journal sont précédées appconfig agent de. Voici un exemple :

[appconfig agent] 2024/05/07 04:19:01 ERROR retrieve failure for 'SourceEventConfig:SourceEventConfigEnvironment:SourceEventConfigProfile': StartConfigurationSession: api error AccessDenied: User: arn:aws:sts::0123456789:assumed-role/us-east-1-LambdaRole/extension1 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::0123456789:role/test1 (retry in 60s)