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 contenedorPARAMETERS_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 permisokms:Decrypt
para la clave de KMS.
Para usar la extensión AWS Parameters and Secrets Lambda
-
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.
-
Conceda permisos al rol de ejecución de Lambda para poder acceder a los secretos:
-
Permiso
secretsmanager:GetSecretValue
para el secreto. Consulte Ejemplo: permiso para recuperar valores secretos. -
(Opcional) 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 permisokms:Decrypt
para la clave de KMS. -
Puede usar el control de acceso basado en atributos (ABAC) con la función de Lambda para permitir un acceso más detallado a los secretos de la cuenta. Para obtener más información, consulte Controlar el acceso a los secretos mediante el control de acceso basado en atributos (ABAC) .
-
-
Configure la memoria caché con variables de entorno de Lambda.
-
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 enAWS_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')}
-
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 paraversionStage
.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 paraversionId
.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
ySECRETS_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
onone
. Establezca esta opción endebug
para ver la configuración de la memoria caché. El valor predeterminado esinfo
. 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.