Activación y administración de Lambda SnapStart - AWS Lambda

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.

Activación de SnapStart (consola)

Para activar SnapStart para una función
  1. Abra la página de Funciones en la consola de Lambda.

  2. Elija el nombre de una función.

  3. Elija Configuration (Configuración) y, a continuación, General configuration (Configuración general).

  4. En el panel de General configuration (Configuración general), elija Edit (Editar).

  5. En la página Edit basic settings (Editar la configuración básica), para SnapStart, seleccione Published versions (Versiones publicadas).

  6. Seleccione Save (Guardar).

  7. 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.

  8. Invoque la versión de la función.

Activación de SnapStart (AWS CLI)

Para activar SnapStart para una función existente
  1. 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
  2. Utilice el comando publish-version para publicar una versión de la función.

    aws lambda publish-version \ --function-name my-function
  3. 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 es Active, 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",
  4. 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.json

    La 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
  1. 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
  2. Cree una versión con el comando publish-version.

    aws lambda publish-version \ --function-name my-function
  3. 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 es Active, 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",
  4. 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.json

    La 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
  1. Realice una de las siguientes acciones siguientes:

  2. 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.

  3. 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 es Active, 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",
  4. 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 vuelve Inactive, Lambda elimina la instantánea. 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 y, a continuación, vuelva a invocarla. El estado Inactive 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 estado Inactive.

  • 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).