Uso del agente de AWS AppConfig con Amazon EC2 y máquinas en las instalaciones - AWS AppConfig

Uso del agente de AWS AppConfig con Amazon EC2 y máquinas en las instalaciones

Puede realizar la integración AWS AppConfig con aplicaciones que se ejecutan en sus instancias de Linux de Amazon Elastic Compute Cloud (Amazon EC2) mediante el agente de AWS AppConfig. El agente mejora el procesamiento y la administración de las aplicaciones de las siguientes maneras:

  • El agente llama a AWS AppConfig en su nombre mediante un rol de (IAM) AWS Identity and Access Management y gestionando una caché local de datos de configuración. Al extraer los datos de configuración de la memoria caché local, su aplicación necesita menos actualizaciones de código para gestionar los datos de configuración, recupera los datos de configuración en milisegundos y no se ve afectada por problemas de red que puedan interrumpir las llamadas a dichos datos.*

  • El agente ofrece una experiencia nativa para recuperar y resolver las marcas de características de AWS AppConfig.

  • En su estado original, el agente proporciona las prácticas recomendadas para las estrategias de almacenamiento en caché, los intervalos de sondeo y la disponibilidad de los datos de configuración local, al tiempo que rastrea los tokens de configuración necesarios para las siguientes llamadas de servicio.

  • Mientras se ejecuta en segundo plano, el agente sondea periódicamente el plano de datos de AWS AppConfig en busca de actualizaciones de los datos de configuración. La aplicación puede recuperar los datos conectándose a localhost en el puerto 2772 (un valor de puerto predeterminado personalizable) y llamando a HTTP GET para recuperar los datos.

*AWS AppConfig El agente almacena en caché los datos la primera vez que el servicio recupera los datos de configuración. Por este motivo, la primera llamada para recuperar datos es más lenta que las llamadas posteriores.

Paso 1 (obligatorio): Crear recursos y configurar los permisos

Para integrar AWS AppConfig con las aplicaciones que se ejecutan en sus instancias de Amazon EC2, debe crear artefactos y datos de configuración de AWS AppConfig, incluidas marcas de características o datos de configuración de formato libre. Para obtener más información, consulte Creación de marcas de características y datos de configuración de formato libre en AWS AppConfig.

Para recuperar los datos de configuración alojados por AWS AppConfig, sus aplicaciones deben configurarse con acceso al plano de datos de AWS AppConfig. Para dar acceso a sus aplicaciones, actualice la política de permisos de IAM que está asignada al rol de instancia de Amazon EC2. En concreto, debe añadir las acciones appconfig:StartConfigurationSession y appconfig:GetLatestConfiguration a la política. A continuación se muestra un ejemplo:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "*" } ] }

Para obtener información sobre cómo añadir permisos a la política, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.

Paso 2 (obligatorio): Instalar e iniciar el agente de AWS AppConfig en las instancias de Amazon EC2

El agente de AWS AppConfig está alojado en un bucket de Amazon Simple Storage Service (Amazon S3) administrado por AWS. Siga este procedimiento para descargar la versión más reciente del agente en su instancia de Linux. Si la aplicación está distribuida en varias instancias, debe realizar este procedimiento en cada instancia que aloje la aplicación.

nota

Tenga en cuenta la siguiente información:

  • El agente de AWS AppConfig está disponible para los sistemas operativos Linux que ejecutan la versión 4.15 o superior del kernel. Los sistemas basados en Debian, como por ejemplo Ubuntu, no son compatibles.

  • El agente es compatible con las arquitecturas x86_64 y ARM64.

  • Para aplicaciones distribuidas, recomendamos añadir los comandos “install” y “startup” a los datos de usuario de Amazon EC2 de su grupo de escalado automático. Si lo hace, cada instancia ejecuta los comandos automáticamente. Para obtener más información, consulte Ejecución de comandos en la instancia de Linux en el inicio en la Guía del usuario de Amazon EC2. Además, puede consultar el Tutorial: Recuperar el estado de ciclo de vida de destino a través de los metadatos de instancia en la Guía del usuario de Amazon EC2 Auto Scaling.

  • Los procedimientos de este tema describen la manera de realizar acciones, como por ejemplo instalar el agente iniciando sesión en la instancia para ejecutar el comando. Puede ejecutar los comandos desde un equipo cliente local y dirigirlos a una o varias instancias mediante Run Command, que es una función de AWS Systems Manager. Para obtener más información, consulte Run Command de AWS Systems Manager en la Guía del usuario de AWS Systems Manager.

  • El agente de AWS AppConfig en las instancias Linux de Amazon EC2 es un servicio de systemd.

Para instalar e iniciar el agente de AWS AppConfig en una instancia
  1. Conexión con su instancia de Linux.

  2. Abra una terminal y ejecute uno de los siguientes comandos con permisos de administrador:

    x86_64

    sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm

    ARM64

    sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/arm64/latest/aws-appconfig-agent.rpm

    Si desea instalar una versión específica del agente de AWS AppConfig, sustituya latest en la URL por un número de versión específico. Este es un ejemplo para x86_64:

    sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/2.0.2/aws-appconfig-agent.rpm
  3. Para iniciar el agente, ejecute el comando siguiente:

    sudo systemctl start aws-appconfig-agent
  4. Ejecute el siguiente comando para verificar que el agente está funcionando:

    sudo systemctl status aws-appconfig-agent

    En caso de éxito, este comando devuelve información similar a la siguiente:

    aws-appconfig-agent.service - aws-appconfig-agent ... Active: active (running) since Mon 2023-07-26 00:00:00 UTC; 0s ago ...
nota

Para detener el agente, ejecute el comando siguiente:

sudo systemctl stop aws-appconfig-agent

Paso 3 (opcional, pero recomendado): Enviar archivos de registro a los registros de CloudWatch

De forma predeterminada, el agente de AWS AppConfig publica los registros en STDERR. Systemd redirige los códigos STDOUT y STDERR de todos los servicios que se ejecutan en la instancia de Linux al diario de systemd. Puede ver y administrar los datos de registro del diario de systemd si ejecuta el agente de AWS AppConfig solo en una o dos instancias. Una solución mejor, que recomendamos encarecidamente para las aplicaciones distribuidas, consiste en escribir los archivos de registro en el disco y, a continuación, utilizar el agente de Amazon CloudWatch para cargar los datos de registro en la nube de AWS. Además, puede configurar el agente de CloudWatch para que elimine los archivos de registro antiguos de la instancia, lo que evita que la instancia se quede sin espacio en disco.

Para habilitar el registro en el disco, debe configurar la variable de entorno LOG_PATH, tal y como se describe en Paso 4 (opcional): Usar variables de entorno para configurar el agente de AWS AppConfig para Amazon EC2.

Para empezar a trabajar con el agente de CloudWatch, consulte Recopilación de métricas y registros de instancias Amazon EC2 y servidores en las instalaciones con el agente de CloudWatch en la Guía del usuario de Amazon CloudWatch. Puede utilizar Configuración Rápida, una función de Systems Manager para instalar rápidamente el agente de CloudWatch. Para obtener más información, consulte Administración de host con Configuración Rápida en la Guía del usuario de AWS Systems Manager.

aviso

Si decide escribir los archivos de registro en el disco sin utilizar el agente de CloudWatch, debe eliminar los archivos de registro antiguos. AWS AppConfig El agente rota automáticamente los archivos de registro cada hora. Si no se eliminan los archivos de registro antiguos, es posible que la instancia se quede sin espacio en disco.

Tras instalar el agente de CloudWatch en su instancia, cree un archivo de configuración del agente de CloudWatch. El archivo de configuración indica al agente de CloudWatch cómo trabajar con los archivos de registro del agente de AWS AppConfig. Para obtener más información acerca de cómo crear un archivo de configuración del agente de CloudWatch, consulte Crear el archivo de configuración del agente de CloudWatch.

Añada la siguiente sección logs al archivo de configuración del agente de CloudWatch en la instancia y guarde los cambios:

"logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/path_you_specified_for_logging", "log_group_name": "${YOUR_LOG_GROUP_NAME}/aws-appconfig-agent.log", "auto_removal": true }, ... ] }, ... }, ... }

Si el valor de auto_removal es true, el agente de CloudWatch elimina automáticamente los archivos de registro del agente de CloudWatch AWS AppConfig rotados.

Paso 4 (opcional): Usar variables de entorno para configurar el agente de AWS AppConfig para Amazon EC2

Puede configurar el agente de AWS AppConfig para Amazon EC2 mediante variables de entorno. Para establecer las variables de entorno de un servicio de systemd, debe crear un archivo de unidad integrado. El siguiente ejemplo muestra cómo crear un archivo de unidades integradas para establecer el AWS AppConfig nivel de registro del agente de en DEBUG.

Ejemplo de cómo crear un archivo de unidad integrada para variables de entorno
  1. Conexión con su instancia de Linux.

  2. Abra una terminal y ejecute el siguiente comando con permisos de administrador. El comando crea un directorio de configuración:

    sudo mkdir /etc/systemd/system/aws-appconfig-agent.service.d
  3. Ejecute el siguiente comando para crear un archivo de unidad integrada. Sustituya file_name por el nombre del archivo. La extensión debe ser .conf:

    sudo touch /etc/systemd/system/aws-appconfig-agent.service.d/file_name.conf
  4. Introduzca la información en el archivo de unidad integrada. En el siguiente ejemplo, se añade una sección Service que define una variable de entorno. El ejemplo establece AWS AppConfig el nivel de registro del agente de en DEBUG.

    [Service] Environment=LOG_LEVEL=DEBUG
  5. Ejecute el siguiente comando para volver a cargar la configuración de systemd:

    sudo systemctl daemon-reload
  6. Para reiniciar el agente de AWS AppConfig, ejecute el siguiente comando.

    sudo systemctl restart aws-appconfig-agent

Puede configurar el agente de AWS AppConfig para Amazon EC2 especificando las siguientes variables de entorno en un archivo de unidad integrada.

Variable de entorno Detalles Valor predeterminado

ACCESS_TOKEN

Esta variable de entorno define un token que se debe proporcionar al solicitar datos de configuración al servidor HTTP del agente. El valor del token debe estar establecido en el encabezado de autorización de la solicitud HTTP con un tipo de autorización de Bearer. A continuación se muestra un ejemplo.

GET /applications/my_app/... Host: localhost:2772 Authorization: Bearer <token value>
Ninguna

BACKUP_DIRECTORY

Esta variable de entorno permite al agente de AWS AppConfig guardar una copia de seguridad de cada configuración que recupera en el directorio especificado.

importante

Las configuraciones con copia de seguridad en el disco no están cifradas. Si su configuración contiene datos confidenciales, AWS AppConfig recomienda que practique el principio de privilegios mínimos con los permisos del sistema de archivos. Para obtener más información, consulte Seguridad en AWS AppConfig.

Ninguna

HTTP_PORT

Esta variable de entorno especifica el puerto en el que se ejecuta el servidor HTTP del agente.

2772

LOG_LEVEL

Esta variable de entorno especifica el nivel de detalle que registra el agente. Cada nivel incluye el nivel actual y todos los niveles superiores. Los nombres de las variables distinguen entre mayúsculas y minúsculas. Del más detallado al menos detallado, los niveles de registro son: debug, info, warn, error y none. Debug incluye información detallada sobre el agente, incluida la información sobre el tiempo.

info

LOG_PATH

La ubicación del disco en la que se escriben los registros. Si no se especifica, los registros se escriben en stderr.

Ninguna

MANIFEST

Esta variable de entorno configura el agente de AWS AppConfig para que aproveche las características adicionales por configuración, como las recuperaciones de varias cuentas y el almacenamiento de la configuración en el disco. Puede escribir 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 Uso de un manifiesto para habilitar características de recuperación adicionales.

true

MAX_CONNECTIONS

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

3

POLL_INTERVAL

Esta variable de entorno controla la frecuencia con la que el agente sondea AWS AppConfig buscando datos de configuración actualizados. Puede especificar un número de segundos para el intervalo. También puede especificar un número con una unidad de tiempo: s para segundos, m para minutos y h para horas. Si no se especifica una unidad, el agente ejecuta de forma predeterminada los segundos. Por ejemplo, 60, 60s y 1m dan como resultado el mismo intervalo de sondeo.

45 segundos

PREFETCH_LIST

Esta variable de entorno especifica los datos de configuración que solicita el agente de AWS AppConfig en cuanto se inicia.

Ninguna

PRELOAD_BACKUPS

Si se configura en true, el agente de AWS AppConfig carga las copias de seguridad de la configuración que se encuentran en la memoria BACKUP_DIRECTORY y comprueba inmediatamente si existe una versión más reciente del servicio. Si se configura en false, el agente de AWS AppConfig solo carga el contenido de una copia de seguridad de la configuración si no puede recuperar los datos de configuración del servicio, por ejemplo, si hay un problema con la red.

true
PROXY_HEADERS Esta variable de entorno especifica los encabezados que requiere el proxy al que se hace referencia en la variable de entorno PROXY_URL. El valor es una lista de encabezados separados por comas. Todos los encabezados utilizan el siguiente formulario.
"header: value"
Ninguna
PROXY_URL Esta variable de entorno especifica la URL del proxy que se va a utilizar para las conexiones entre el agente y Servicios de AWS, incluyendo AWS AppConfig. Se admiten URL HTTPS y HTTP. Ninguna

REQUEST_TIMEOUT

Esta variable de entorno controla el tiempo que el agente espera una respuesta de AWS AppConfig. Si el servicio no responde, se produce un error en la solicitud.

Si la solicitud se emplea para la recuperación inicial de datos, el agente devuelve un error a su solicitud.

Si el tiempo de espera se agota cuando se está comprobando en segundo plano si hay datos actualizados, el agente registra el error y lo vuelve a intentar tras un breve retraso.

Puede especificar el número de milisegundos del tiempo de espera. También puede especificar un número con una unidad de tiempo: ms para milisegundos y s para segundos. Si no se especifica una unidad, el valor predeterminado del agente es milisegundos. Por ejemplo, 5000, 5000ms y 5s dan como resultado el mismo valor de tiempo de espera de la solicitud.

3000 milisegundos
ROLE_ARN Esta variable de entorno especifica el nombre de recurso de Amazon (ARN) de un rol de IAM. AWS AppConfig El agente asume este rol para recuperar datos de configuración. Ninguna
ROLE_EXTERNAL_ID Esta variable de entorno especifica el ID externo que se utilizará con el ARN del rol asumido. Ninguna
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
SERVICE_REGION Esta variable de entorno especifica una Región de AWS alternativa que el agente de AWS AppConfig utiliza para llamar al servicio de AWS AppConfig. Si no se define, el agente intenta determinar la región actual. Si no puede, el agente no podrá iniciarse. Ninguna

WAIT_ON_MANIFEST

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

true

Paso 5 (obligatorio): Recuperar datos de configuración

Puede recuperar los datos de configuración del agente de AWS AppConfig mediante una llamada HTTP a localhost. Los siguientes ejemplos utilizan curl con un cliente HTTP. Puede llamar al agente utilizando cualquier cliente HTTP disponible compatible con el lenguaje de su aplicación o con las bibliotecas disponibles, incluido un SDK de AWS.

Para recuperar el contenido completo de cualquier configuración implementada

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name"

Para recuperar una única marca y sus atributos desde una configuración AWS AppConfig de tipo Feature Flag

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name"

Para acceder a varias marcas y sus atributos desde una configuración de AWS AppConfig de tipo Feature Flag

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two"

Paso 6 (opcional, pero recomendado): Automatizar las actualizaciones del agente de AWS AppConfig

El agente de AWS AppConfig se actualiza periódicamente. Para asegurarse de que está ejecutando la versión más reciente del agente de AWS AppConfig en sus instancias, le recomendamos que añada los siguientes comandos a sus datos de usuario de Amazon EC2. Puede añadir los comandos a los datos de usuario de la instancia o del grupo de escalado automático de EC2. El script instala e inicia la última versión del agente cada vez que se inicia o se reinicia una instancia.

#!/bin/bash # install the latest version of the agent yum install -y https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm # optional: configure the agent mkdir /etc/systemd/system/aws-appconfig-agent.service.d echo "${MY_AGENT_CONFIG}" > /etc/systemd/system/aws-appconfig-agent.service.d/overrides.conf systemctl daemon-reload # start the agent systemctl start aws-appconfig-agent