Activación y administración de Lambda SnapStart
Para utilizar SnapStart, active SnapStart en una función de Lambda nueva o existente. A continuación, publique e invoque una versión de la función.
Temas
Activación de SnapStart (consola)
Para activar SnapStart para una función
Abra la página de Funciones
en la consola de Lambda. -
Elija el nombre de una función.
-
Elija Configuration (Configuración) y, a continuación, General configuration (Configuración general).
-
En el panel de General configuration (Configuración general), elija Edit (Editar).
-
En la página Edit basic settings (Editar la configuración básica), para SnapStart, seleccione Published versions (Versiones publicadas).
-
Seleccione Save (Guardar).
-
Publique una versión de la función. Lambda inicializa el código, crea una instantánea del entorno de ejecución inicializado y, a continuación, almacena la instantánea en caché para acceder a ella con baja latencia.
Activación de SnapStart (AWS CLI)
Para activar SnapStart para una función existente
-
Actualice la configuración de la función ejecutando el comando update-function-configuration
con la opción --snap-start. aws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersions
-
Utilice el comando publish-version
para publicar una versión de la función. aws lambda publish-version \ --function-name my-function
-
Confirme que SnapStart está activado para la versión de la función; para ello, ejecute el comando get-function-configuration
y especifique el número de versión. El siguiente ejemplo especifica la versión 1. aws lambda get-function-configuration \ --function-name my-function:
1
Si la respuesta muestra que OptimizationStatus es
On
y Estado esActive
, SnapStart se activa y hay una instantánea disponible para la versión de la función especificada."SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
Para invocar la versión de la función, ejecute el comando invoke
y especifique la versión. El siguiente ejemplo invoca la versión 1. aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:
1
\ --payload '{ "name": "Bob" }' \ response.jsonLa opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute
aws configure set cli-binary-format raw-in-base64-out
. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.
Para activar SnapStart cuando crea una nueva función
-
Ejecute el comando create-function
para crear una función con la opción --snap-start. Para --role, especifique el nombre de recurso de Amazon (ARN) del rol de ejecución. aws lambda create-function \ --function-name my-function \ --runtime "java21" \ --zip-file fileb://my-function.zip \ --handler my-function.handler \ --role
arn:aws:iam::111122223333:role/lambda-ex
\ --snap-start ApplyOn=PublishedVersions -
Cree una versión con el comando publish-version
. aws lambda publish-version \ --function-name my-function
-
Confirme que SnapStart está activado para la versión de la función; para ello, ejecute el comando get-function-configuration
y especifique el número de versión. El siguiente ejemplo especifica la versión 1. aws lambda get-function-configuration \ --function-name my-function:
1
Si la respuesta muestra que OptimizationStatus es
On
y Estado esActive
, SnapStart se activa y hay una instantánea disponible para la versión de la función especificada."SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
Para invocar la versión de la función, ejecute el comando invoke
y especifique la versión. El siguiente ejemplo invoca la versión 1. aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:
1
\ --payload '{ "name": "Bob" }' \ response.jsonLa opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute
aws configure set cli-binary-format raw-in-base64-out
. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.
Activación de SnapStart (API)
Para activar SnapStart
-
Realice una de las siguientes acciones siguientes:
-
Cree una nueva función con SnapStart activado mediante la acción de la API CreateFunction con el parámetro SnapStart.
-
Active SnapStart para una función existente mediante la acción UpdateFunctionConfiguration con el parámetro SnapStart.
-
-
Publique una versión de la versión con la acción publish-version. Lambda inicializa el código, crea una instantánea del entorno de ejecución inicializado y, a continuación, almacena la instantánea en caché para acceder a ella con baja latencia.
-
Confirme que SnapStart esté activado para la versión de la función mediante la acción GetFunctionConfiguration. Especifique un número de versión para confirmar que SnapStart está activado para esa versión. Si la respuesta muestra que OptimizationStatus es
On
y Estado esActive
, SnapStart se activa y hay una instantánea disponible para la versión de la función especificada."SnapStart": { "ApplyOn": "PublishedVersions",
"OptimizationStatus": "On"
},"State": "Active"
, -
Invoque la versión de la función con la acción Invoke.
Lambda SnapStart y estados de la función
Se pueden producir los siguientes estados de función al utilizar SnapStart. También pueden surgir cuando Lambda recicla periódicamente el entorno de ejecución y vuelve a ejecutar el código de inicialización de una función configurada con SnapStart.
-
Pending
: Lambda está inicializando el código y tomando una instantánea del entorno de ejecución inicializado. Las invocaciones u otras acciones de API que actúen en la versión de la función producirán errores. -
Active
: la creación de instantáneas está completa y puede invocar la función. Para usar SnapStart, debe invocar la versión de la función publicada, no la versión no publicada ($LATEST). -
Inactive
: la versión de la función no se ha invocado durante 14 días. Cuando la versión de la función se vuelveInactive
, Lambda elimina la instantánea. Si invoca la versión de la función transcurridos 14 días, Lambda devuelve una respuestaSnapStartNotReadyException
y comienza a inicializar una nueva instantánea. Espere hasta que la versión de la función alcance el estadoActive
y, a continuación, vuelva a invocarla. El estadoInactive
también puede producirse cuando Lambda ejecuta un reciclaje periódico del entorno de ejecución. En este caso, si la función no se inicializa, puede entrar en el estadoInactive
. -
Failed
: Lambda encontró un error al ejecutar el código de inicialización o al crear la instantánea.
Actualización de una instantánea
Lambda crea una instantánea para cada versión de función publicada. Para actualizar una instantánea, publique una nueva versión de la función. Lambda actualiza automáticamente las instantáneas con los parches de seguridad y de tiempo de ejecución más recientes.
Uso de SnapStart con AWS SDK for Java
Para realizar llamadas AWS SDK desde su función, Lambda genera un conjunto efímero de credenciales al asumir el rol de ejecución de la función. Estas credenciales están disponibles como variables de entorno durante la invocación de la función. No es necesario proporcionar las credenciales de SDK directamente en el código. De forma predeterminada, la cadena de proveedores de credenciales comprueba secuencialmente cada lugar en el que puede configurar las credenciales y elige el primero disponible, normalmente las variables de entorno (AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
, y AWS_SESSION_TOKEN
).
nota
Cuando SnapStart está activado, el tiempo de ejecución de Java utiliza automáticamente las credenciales del contenedor (AWS_CONTAINER_CREDENTIALS_FULL_URI
y AWS_CONTAINER_AUTHORIZATION_TOKEN
) en lugar de las variables de entorno de la clave de acceso. Esto evita que las credenciales caduquen antes de que se restablezca la función.
Uso de SnapStart con AWS CloudFormation, AWS SAM y AWS CDK
-
AWS CloudFormation: declare la entidad SnapStart en su plantilla.
-
AWS Serverless Application Model (AWS SAM): declare la propiedad SnapStart en su plantilla.
-
AWS Cloud Development Kit (AWS CDK): utilice el tipo SnapStartProperty.
Eliminación de instantáneas
Lambda elimina las instantáneas cuando sucede lo siguiente:
-
Elimina la función o la versión de la función.
-
No invoca la versión de la función durante 14 días. Tras 14 días sin una invocación, la versión de la función pasa al estado Inactive (Inactivo). Si invoca la versión de la función transcurridos 14 días, Lambda devuelve una respuesta
SnapStartNotReadyException
y comienza a inicializar una nueva instantánea. Espere hasta que la versión de la función alcance el estado Active (Activo) y, a continuación, vuelva a invocarla.
Lambda elimina todos los recursos asociados a las instantáneas eliminadas de acuerdo con el Reglamento General de Protección de Datos (RGPD).