Uso de secretos de AWS Secrets Manager en las funciones de AWS Lambda - AWS Secrets Manager

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.

Uso de secretos de AWS Secrets Manager en las funciones de AWS Lambda

Puede usar la extensión AWS Parameters and Secrets Lambda para recuperar y almacenar secretos de AWS Secrets Manager en las funciones de Lambda sin usar un SDK. Recuperar un secreto almacenado en la memoria caché es más rápido que recuperarlo desde Secrets Manager. Dado que la llamada a las API de Secrets Manager conlleva un costo, el uso de una caché puede reducirlo. La extensión puede recuperar los secretos de Secrets Manager y los parámetros del almacén de parámetros. Para obtener información sobre el almacén de parámetros, consulte Parameter Store integration with Lambda extensions (Integración del almacén de parámetros con las extensiones de Lambda) en la Guía del usuario de AWS Systems Manager.

Una extensión de Lambda es un proceso complementario que se suma a las capacidades de una función de Lambda. Para obtener más información, consulte Lambda extensions (Extensiones de Lambda) en la Guía para desarrolladores de Lambda. Para obtener información sobre el uso de la extensión en una imagen de contenedor, consulte Trabajar con capas y extensiones de Lambda en imágenes de contenedor. Lambda registra la información de ejecución acerca de la extensión junto con la función mediante Registros de Amazon CloudWatch. De forma predeterminada, la extensión registra una cantidad mínima de información en CloudWatch. Para registrar más detalles, establezca la variable de entorno PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL en debug.

Para proporcionar la caché en memoria para los parámetros y secretos, la extensión expone un punto de conexión HTTP local, el puerto localhost 2773, al entorno Lambda. Para configurar el puerto, establezca la variable de entorno PARAMETERS_SECRETS_EXTENSION_HTTP_PORT.

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 reservada de Lambda en la Guía para desarrolladores de Lambda.

Para agregar la extensión para ARM, debe usar la arquitectura arm64 en la función de Lambda. Para obtener más información, consulte Arquitecturas del conjunto de instrucciones Lambda en la Guía para desarrolladores de Lambda. La extensión admite ARM en la regiones siguientes: Asia-Pacífico (Bombay), Este de EE. UU. (Ohio), Europa (Irlanda), Europa (Fráncfort), Europa (Zúrich), Este de EE. UU. (Norte de Virginia), Europa (Londres), Europa (España), Asia-Pacífico (Tokio), Oeste de EE. UU. (Oregón), Asia-Pacífico (Singapur), Asia-Pacífico (Hyderabad) y Asia-Pacífico (Sídney).

La extensión usa un cliente de AWS. Para obtener información sobre la configuración del cliente de AWS, consulte la Referencia sobre la configuración en la Guía de referencia de los SDK y las herramientas de AWS. Si su función de Lambda se ejecuta en una VPC, debe crear un punto de conexión de VPC para que la extensión pueda realizar llamadas a Secrets Manager. Para obtener más información, consulte Uso de un punto de conexión de VPC de AWS Secrets Manager.

Permisos necesarios:

  • El rol de ejecución de Lambda debe tener el permiso secretsmanager:GetSecretValue para usar el secreto.

  • Si el secreto se cifra con una clave administrada por el cliente en lugar de con Clave administrada de AWS aws/secretsmanager, el rol de ejecución también necesita el permiso kms:Decrypt para la clave de KMS.

Para usar la extensión AWS Parameters and Secrets Lambda
  1. Añada la capa AWS denominada Extensión de Lambda para parámetros y secretos de AWS a su función. Para obtener instrucciones, consulte Añadir capas a funciones en la Guía para desarrolladores de Lambda. Si utiliza AWS CLI para añadir la capa, necesitará el ARN de la extensión. Para obtener una lista de los ARN, consulte AWSParámetros y secretos de los ARN de la extensión de Lambda en la Guía del usuario AWS Systems Manager.

  2. Conceda permisos al rol de ejecución de Lambda para poder acceder a los secretos:

  3. Configure la memoria caché con variables de entorno de Lambda.

  4. Para recuperar los secretos de la caché de extensiones, primero debe agregar X-AWS-Parameters-Secrets-Token al encabezado de la solicitud. Configure el token en AWS_SESSION_TOKEN, que Lambda proporciona para todas las funciones en ejecución. El uso de este encabezado indica que el intermediario se encuentra en el entorno de Lambda.

    El siguiente ejemplo de Python muestra cómo agregar el encabezado.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Para recuperar un secreto en la función de Lambda, utilice una de las siguientes solicitudes HTTP GET:

    • Para recuperar un secreto, utilice el ARN o nombre del secreto para secretId.

      GET: /secretsmanager/get?secretId=secretId
    • Para recuperar el valor de secreto anterior o una versión específica por etiqueta provisional, utilice el ARN o nombre del secreto para secretId y la etiqueta provisional para versionStage.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Para recuperar una versión de secreto específica por ID, utilice el ARN o nombre del secreto para secretId y el ID de versión para versionId.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    ejemplo Recuperar un secreto (Python)

    El siguiente ejemplo de Python muestra cómo recuperar un secreto y analizar el resultado mediante 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

Variables de entorno de la extensión AWS Parameters and Secrets Lambda

Puede configurar la extensión con las siguientes variables de entorno.

Para obtener información sobre cómo usar las variables de entorno, consulte Uso de variables de entorno de Lambda en la Guía para desarrolladores de Lambda.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Establezca el valor en true para almacenar en caché los parámetros y secretos. Se establece en false para no almacenar en caché. El valor predeterminado es verdadero.

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

La cantidad máxima de secretos y parámetros que almacenar en caché. Debe ser un valor entre 0 y 1000. Un valor de 0 indica que no hay almacenamiento en la memoria caché. Esta variable se ignora si los valores de SSM_PARAMETER_STORE_TTL y SECRETS_MANAGER_TTL son 0. El valor predeterminado es 1000.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

El puerto del servidor HTTP local. El valor predeterminado es 2773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

El nivel de registro que proporciona la extensión: debug, info, warn, error o none. Establezca esta opción en debug para ver la configuración de la memoria caché. El valor predeterminado es info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Cantidad máxima de conexiones para los clientes HTTP que la extensión utiliza para hacer solicitudes al almacén de parámetros o Secrets Manager. Se trata de una configuración por cliente. El valor predeterminado es 3.

SECRETS_MANAGER_TIMEOUT_MILLIS

Tiempo de espera para las solicitudes a Secrets Manager en milisegundos. Un valor de 0 indica que no hay tiempo de espera. El valor predeterminado es 0.

SECRETS_MANAGER_TTL

TTL de un secreto en la memoria caché en segundos. Un valor de 0 indica que no hay almacenamiento en la memoria caché. El máximo es de 300 segundos. Esta variable se ignora si PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE es 0. El valor predeterminado es de 300 segundos.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Tiempo de espera para las solicitudes al almacén de parámetros en milisegundos. Un valor de 0 indica que no hay tiempo de espera. El valor predeterminado es 0.

SSM_PARAMETER_STORE_TTL

TTL de un parámetro de la caché en segundos. Un valor de 0 indica que no hay almacenamiento en la memoria caché. El máximo es de 300 segundos. Esta variable se ignora si PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE es 0. El valor predeterminado es de 300 segundos.