Recuperación de datos de configuración mediante la extensión AWS AppConfig Agent Lambda - AWS AppConfig

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recuperación de datos de configuración mediante la extensión AWS AppConfig Agent Lambda

Una AWS Lambda extensión es un proceso complementario que aumenta las capacidades de una función Lambda. Una extensión puede iniciarse antes de que se invoque una función, ejecutarse en paralelo con una función y continuar ejecutándose después de que se procese la invocación de una función. Una extensión de Lambda es como un cliente que se ejecuta en paralelo a una invocación de Lambda. Este cliente paralelo puede interactuar con su función en cualquier momento de su ciclo de vida.

Si utiliza indicadores de AWS AppConfig características u otros datos de configuración dinámica en una función de Lambda, le recomendamos que añada la extensión Agent AWS AppConfig Lambda como capa a la función de Lambda. Esto simplifica la llamada a los indicadores de funciones y la propia extensión incluye prácticas recomendadas que simplifican su uso y, al mismo AWS AppConfig tiempo, reducen los costes. La reducción de los costos se debe a la reducción de las llamadas a la API al AWS AppConfig servicio y a la reducción de los tiempos de procesamiento de las funciones de Lambda. Para obtener más información sobre las extensiones de Lambda, consulte Extensiones de Lambda en la Guía para desarrolladores de AWS Lambda .

nota

AWS AppConfig los precios se basan en la cantidad de veces que se llama y se recibe una configuración. Sus costos aumentan si su Lambda realiza varios arranques en frío y recupera nuevos datos de configuración con frecuencia.

En este tema se incluye información sobre la extensión AWS AppConfig Agent Lambda y el procedimiento para configurar la extensión para que funcione con la función Lambda.

Funcionamiento

Si se utiliza AWS AppConfig para gestionar las configuraciones de una función de Lambda sin extensiones de Lambda, debe configurar la función de Lambda para que reciba las actualizaciones de configuración mediante la integración con las acciones de la API. StartConfigurationSessionGetLatestConfiguration

La integración de la extensión AWS AppConfig Agent Lambda con la función Lambda simplifica este proceso. La extensión se encarga de llamar al AWS AppConfig servicio, administrar una caché local de los datos recuperados, rastrear los identificadores de configuración necesarios para las próximas llamadas al servicio y comprobar periódicamente si hay actualizaciones de configuración en segundo plano. El siguiente diagrama muestra cómo funciona.

Un diagrama de cómo funciona la AWS AppConfig extensión Agent Lambda
  1. La extensión AWS AppConfig Agent Lambda se configura como una capa de la función Lambda.

  2. Para acceder a sus datos de configuración, la función llama a la AWS AppConfig extensión en un punto final HTTP que se esté ejecutando. localhost:2772

  3. La extensión mantiene una caché local de los datos de configuración. Si los datos no están en la caché, la extensión llama AWS AppConfig para obtener los datos de configuración.

  4. Al recibir la configuración del servicio, la extensión la almacena en la memoria caché local y la pasa a la función de Lambda.

  5. AWS AppConfig La extensión Agent Lambda comprueba periódicamente si hay actualizaciones en los datos de configuración en segundo plano. Cada vez que se invoca la función de Lambda, la extensión comprueba el tiempo transcurrido desde que recuperó una configuración. Si el tiempo transcurrido es superior al intervalo de sondeo configurado, la extensión llama AWS AppConfig para comprobar si hay datos recién implementados, actualiza la memoria caché local si se ha producido algún cambio y restablece el tiempo transcurrido.

nota
  • Lambda crea instancias independientes correspondientes al nivel de simultaneidad que requiere la función. Cada instancia está aislada y mantiene su propia memoria caché local de los datos de configuración. Para obtener más información sobre las instancias de Lambda y la simultaneidad, consulte Administración de la simultaneidad para una función de Lambda.

  • El tiempo que tarda un cambio de configuración en aparecer en una función Lambda, después de implementar una configuración actualizada AWS AppConfig, depende de la estrategia de implementación que haya utilizado para la implementación y del intervalo de sondeo que haya configurado para la extensión.

Antes de empezar

Antes de activar la extensión AWS AppConfig Agent Lambda, haga lo siguiente:

Añadir la extensión AWS AppConfig Agent Lambda

Para utilizar la extensión AWS AppConfig Agent Lambda, debe añadir la extensión a su Lambda. Esto se puede hacer añadiendo la extensión AWS AppConfig Agent Lambda a la función Lambda como capa o activando la extensión en una función Lambda como imagen contenedora.

nota

La AWS AppConfig extensión es independiente del tiempo de ejecución y es compatible con todos los tiempos de ejecución.

Agregar la extensión de Lambda del agente de AWS AppConfig mediante una capa y un ARN

Para usar la extensión AWS AppConfig Agent Lambda, añada la extensión a la función Lambda como una capa. Para obtener información sobre cómo añadir una capa a la función, consulte Configuración de extensiones en la Guía del desarrollador de AWS Lambda . El nombre de la extensión en la AWS Lambda consola es AWS- AppConfig -Extension. Tenga en cuenta también que cuando agregue la extensión como una capa a su Lambda, debe especificar un nombre de recurso de Amazon (ARN). Elija un ARN de una de las siguientes listas que corresponda a la plataforma y al Región de AWS lugar donde creó la Lambda.

Si desea probar la extensión antes de añadirla a la función, puede comprobar que funciona mediante el siguiente ejemplo de código.

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

Para probarlo, cree una función de Lambda nueva para Python, agregue la extensión y ejecute la función de Lambda. Tras ejecutar la función Lambda, la función AWS AppConfig Lambda devuelve la configuración que especificó para la ruta http://localhost:2772. Para obtener información sobre la creación de una función de Lambda, consulte Creación de una función Lambda con la consola en la Guía para desarrolladores de AWS Lambda .

Para añadir la extensión AWS AppConfig Agent Lambda como imagen de contenedor, consulte. Uso de una imagen de contenedor para añadir la extensión AWS AppConfig Agent Lambda

Configuración de la extensión de Lambda del agente de AWS AppConfig

Puede configurar la extensión cambiando las siguientes variables de AWS Lambda entorno. Para obtener más información, consulte Uso de variables de AWS Lambda entorno en la Guía para AWS Lambda desarrolladores.

Recuperación previa de los datos de configuración

La variable de entorno AWS_APPCONFIG_EXTENSION_PREFETCH_LIST puede mejorar el tiempo de inicio de la función. Cuando se inicializa la extensión AWS AppConfig Agent Lambda, recupera la configuración especificada antes de que AWS AppConfig Lambda comience a inicializar la función e invocar el controlador. En algunos casos, los datos de configuración ya están disponibles en la memoria caché local antes de que la función los solicite.

Para utilizar la función de obtención previa, defina el valor de la variable de entorno en la ruta correspondiente a los datos de configuración. Por ejemplo, si la configuración corresponde a una aplicación, un entorno y un perfil de configuración denominados respectivamente "my_application", "my_environment" y "my_configuration_data", la ruta sería /applications/my_application/environments/my_environment/configurations/my_configuration_data. Puede especificar varios elementos de configuración enumerándolos en una lista separada por comas (si tiene un nombre de recurso que incluye una coma, utilice el valor de ID del recurso en lugar de su nombre).

Acceso a los datos de configuración desde otra cuenta

La extensión AWS AppConfig Agent Lambda puede recuperar datos de configuración de otra cuenta especificando un rol de IAM que concede permisos a los datos. Para establecer esta política, siga estos pasos:

  1. En la cuenta en la que AWS AppConfig se utilizan para administrar los datos de configuración, cree un rol con una política de confianza que conceda a la cuenta que ejecuta la función Lambda acceso a las appconfig:GetLatestConfiguration acciones appconfig:StartConfigurationSession y, junto con los ARN parciales o completos correspondientes a los AWS AppConfig recursos de configuración.

  2. En la cuenta que ejecuta la función de Lambda, agregue la variable de entorno AWS_APPCONFIG_EXTENSION_ROLE_ARN a la función de Lambda con el ARN del rol creado en el paso 1.

  3. (Opcional) Si es necesario, se puede especificar un ID externo mediante la variable de entorno AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID. Del mismo modo, se puede configurar un nombre de sesión mediante la variable de entorno AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME.

nota

Observe la siguiente información.

  • La extensión AWS AppConfig Agent Lambda solo puede recuperar datos de una cuenta. Si especifica un rol de IAM, la extensión no podrá recuperar los datos de configuración de la cuenta en la que se ejecuta la función de Lambda.

  • AWS Lambda registra información sobre la extensión AWS AppConfig Agent Lambda y la función Lambda mediante Amazon Logs. CloudWatch

Variable de entorno Detalles Valor predeterminado

AWS_APPCONFIG_EXTENSION_HTTP_PORT

Esta variable de entorno especifica el puerto en el que se ejecuta el servidor HTTP local que aloja la extensión.

2772

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

Esta variable de entorno especifica qué registros AWS AppConfig específicos de la extensión se envían a Amazon CloudWatch Logs para una función. Los valores válidos que no distinguen entre mayúsculas y minúsculas son debug, info, warn, error y none. La depuración incluye información detallada, incluida la información sobre el tiempo y la extensión.

info

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

Esta variable de entorno configura el número máximo de conexiones que la extensión utiliza para recuperar configuraciones de AWS AppConfig.

3

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

Esta variable de entorno controla la frecuencia con la que la extensión AWS AppConfig busca una configuración actualizada en cuestión de segundos.

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

Esta variable de entorno controla el tiempo máximo, en milisegundos, durante el que la extensión espera una respuesta AWS AppConfig al actualizar los datos de la caché. Si AWS AppConfig no responde en el período de tiempo especificado, la extensión omite este intervalo de sondeo y devuelve los datos almacenados en caché previamente actualizados.

3 000

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

Esta variable de entorno especifica los datos de configuración que la extensión comienza a recuperar antes de que la función se inicialice y se ejecute el controlador. Puede reducir considerablemente el tiempo de inicio en frío de la función.

Ninguna
AWS_APPCONFIG_EXTENSION_PROXY_HEADERS Esta variable de entorno especifica los encabezados requeridos por el proxy al que se hace referencia en la variable de entorno AWS_APPCONFIG_EXTENSION_PROXY_URL. El valor es una lista de encabezados separados por comas. Todos los encabezados utilizan el siguiente formulario:
"header: value"
Ninguna
AWS_APPCONFIG_EXTENSION_PROXY_URL Esta variable de entorno especifica la URL del proxy que se utilizará para las conexiones desde la AWS AppConfig extensión a. Servicios de AWSHTTPSy se admiten las HTTP direcciones URL. Ninguna
AWS_APPCONFIG_EXTENSION_ROLE_ARN Esta variable de entorno especifica el ARN del rol de IAM correspondiente a un rol que la extensión debe asumir para recuperar AWS AppConfig la configuración. Ninguna
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID Esta variable de entorno especifica el identificador externo que se utilizará junto con el ARN del rol asumido. Ninguna
AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME Esta variable de entorno especifica el nombre de la sesión que se va a asociar a las credenciales del rol de IAM asumido. Ninguna
AWS_APPCONFIG_EXTENSION_SERVICE_REGION Esta variable de entorno especifica una región alternativa que la extensión debe usar para llamar al AWS AppConfig servicio. Si no se ha definido, la extensión usa el punto de conexión de la región actual. Ninguna

AWS_APPCONFIG_EXTENSION_MANIFEST

Esta variable de entorno configura el AWS AppConfig Agente para que aproveche las funciones adicionales por configuración, como las recuperaciones de varias cuentas y el almacenamiento de la configuración en el disco. Puede introducir uno de los siguientes valores:

  • "app:env:manifest-config"

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

Para obtener más información sobre el uso de estas características, consulte Funciones de recuperación adicionales.

true

AWS_APPCONFIG_EXTENSION_WAIT_ON_MANIFEST

Esta variable de entorno configura el AWS AppConfig agente para que espere hasta que se procese el manifiesto antes de completar el inicio.

true

Recuperación de una o varias marcas de una configuración de marcas de características

Para las configuraciones de marcas de características (configuraciones de tipo AWS.AppConfig.FeatureFlags), la extensión de Lambda le permite recuperar una sola marca o un subconjunto de marcas de una configuración. Recuperar una o dos marcas es útil si su Lambda solo necesita usar algunas marcas del perfil de configuración. El siguiente ejemplo usa Python.

nota

La posibilidad de llamar a un único indicador de función o a un subconjunto de indicadores en una configuración solo está disponible en la versión 2.0.45 y versiones posteriores de la extensión AWS AppConfig Agent Lambda.

Puede recuperar los datos de AWS AppConfig configuración de un punto final HTTP local. Para acceder a una marca específica o a una lista de marcas, utilice el parámetro de consulta ?flag=flag_name para un perfil de configuración de AWS AppConfig .

Para acceder a una única marca y sus atributos

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

Para acceder a varias marcas y sus atributos

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

Visualización de los registros de extensiones de AWS AppConfig Agent Lambda

Puede ver los datos de registro de la extensión AWS AppConfig Agent Lambda en los AWS Lambda registros. Las entradas de registro van precedidas de. appconfig agent A continuación se muestra un ejemplo.

[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)