¿Cómo puedo usar las capas para integrar la versión más reciente del AWS SDK para JavaScript en mi función de Lambda Node.js?

6 minutos de lectura
0

El entorno de la versión de ejecutable de AWS Lambda no tiene todas las características de la versión más reciente de un AWS SDK. Quiero integrar la versión más reciente del AWS SDK para JavaScript en mi función de Lambda Node.js.

Breve descripción

Para integrar la versión más reciente de un AWS SDK en el paquete de despliegue de tu función de Lambda, crea una capa de Lambda. A continuación, agrega la capa a tu función.

Nota: En el caso de la versión 16 de Node.js y versiones anteriores, la versión ejecutable de Node.js de Lambda incluye el AWS SDK para JavaScript versión 2. En el caso de la versión 18 de Node.js y versiones posteriores, la versión ejecutable de Node.js de Lambda incluye el AWS SDK para JavaScript versión 3. Para obtener más información, consulta la documentación de AWS SDK para JavaScript.

Para obtener una lista completa de las versiones ejecutables y las versiones del AWS SDK que utiliza Lambda, consulta Versiones ejecutables de Lambda.

Nota: La siguiente solución aumenta el tamaño del paquete de despliegue de la función. Para obtener más información sobre las cuotas de almacenamiento de Lambda, consulta Cuotas de Lambda.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

(Opcional) Confirmación de la versión del AWS SDK que usa tu función

Sigue estos pasos:

Nota: Utiliza este método únicamente para la versión 16 de Node.js y versiones anteriores.

  1. Crea una función en la consola de Lambda.

  2. Actualiza el código de la función para devolver la versión del AWS SDK que la función usa al invocar la función:

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. Invoca la función.

  4. Compara la versión del AWS SDK que devolvió tu función con la versión más reciente del AWS SDK en la documentación del AWS SDK.

Instalación y empaquetado de la versión más reciente del AWS SDK

Nota: Los paquetes de despliegue deben ser compatibles con la versión de despliegue de Lambda que utilices. Se recomienda usar el mismo sistema operativo (SO) para la versión ejecutable especificada en Versiones ejecutables de Lambda.

En un entorno de desarrollo local compatible con Lambda, sigue estos pasos:

  1. Ejecuta el siguiente comando para crear un directorio de trabajo:

    mkdir -p aws-sdk-layer/nodejs
  2. Ejecuta el siguiente comando para cambiar al directorio:

    cd aws-sdk-layer/nodejs
  3. Instala el AWS SDK para tu versión ejecutable de Node.js:
    Node.js 16 y versiones anteriores (AWS SDK versión 2)
    Para instalar la versión más reciente del AWS SDK versión 2, utiliza una instancia compatible con Amazon Linux 2 para ejecutar el siguiente comando:

    npm install aws-sdk

    Para obtener más información, consulta Tutorial: Configuración de Node.js en una instancia de Amazon EC2.
    Nota: Para desarrollar recursos de Lambda, se recomienda usar un entorno de Amazon Linux 2.
    Alternativa:
    Si usas un sistema operativo Windows o macOS para el desarrollo, usa Docker para ejecutar el siguiente comando:

    docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"

    Nota: Antes de ejecutar el comando, asegúrate de usar la versión más reciente de Docker en el sitio web de Docker.

    Node.js 18 y versiones posteriores (AWS SDK versión 3)
    Para instalar la versión más reciente del AWS SDK versión 3, consulta Instalación del SDK para JavaScript.

  4. Crea un archivo .zip para cargarlo en la capa de Lambda:

    zip -r ../package.zip ../
  5. (Opcional) Comprueba la versión del AWS SDK que has instalado:

    cat package-lock.json

    Resultado de ejemplo:

    {  "requires": true,    "lockfileVersion": 1,  
      "dependencies": {  
        "aws-sdk": {  
          "version": "2.888.0",  
    ...

Utilización de la AWS CLI o la consola de Lambda para crear una capa de Lambda y agregarla a tu función

AWS CLI

  1. Para crear una nueva capa de Lambda que incluya la versión más reciente del AWS SDK, ejecuta el siguiente comando publish-layer-version:

    aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region

    Nota: Sustituye node_sdk por el nombre de la capa y My layer por una descripción de la capa. Además, sustituye el valor de compatible-runtimes por la versión ejecutable que utilizas y region por la región de AWS en la que se encuentran tu función y la capa.

  2. En la salida, copia el valor LayerVersionArn para usarlo en el siguiente paso.

  3. Para agregar la capa a tu función, ejecuta el siguiente comando update-function-configuration:

    aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region

    Nota: Sustituye my-function por el nombre de tu función, arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 por el valor de LayerVersionArn en el resultado y region por tu región.

Para obtener más información, consulta Administración de las dependencias de Lambda con capas.

Consola de Lambda

Para crear una capa de Lambda y agregarla a tu función en la consola de Lambda, sigue estos pasos:

  1. Abre la página Capas en la consola de Lambda.
  2. Elige Crear una capa.
  3. En Nombre, introduce un nombre para la nueva capa.
  4. Selecciona Cargar un archivo.zip y, a continuación, elige el nombre del archivo .zip del paquete de despliegue.
  5. Selecciona Crear.
  6. Abre la página Funciones en la consola de Lambda y, a continuación, selecciona el nombre de la función a la que desees agregar la capa.
  7. En Capas, elige Agregar una capa.
  8. En Elige una capa, selecciona Capas personalizadas.
  9. Selecciona la lista desplegable Capas personalizadas y, a continuación, elige tu capa personalizada.
  10. Elige Agregar.

(Opcional) Prueba de la configuración

Sigue los pasos del apartado (Opcional) Confirmación de la versión del AWS SDK que usa tu función para invocar tu función. La función devuelve la versión del AWS SDK que usa.

Información relacionada

Prácticas recomendadas para trabajar con funciones de AWS Lambda

¿Cómo puedo crear un paquete de despliegue de Lambda para Node.js?

¿Cómo puedo crear una capa para mi función de Lambda de Python?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 23 días