AWS Lambda depuración remota - AWS Kit de herramientas para VS Code

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.

AWS Lambda depuración remota

AWS Toolkit for Visual Studio Code Esto le permite depurar AWS Lambda las funciones que se ejecutan en la nube, directamente en VS Code. Con la depuración AWS Lambda remota, puede inspeccionar las funciones en ejecución, establecer puntos de interrupción, examinar variables y realizar la depuración gradual sin modificar su flujo de trabajo de desarrollo actual.

En las secciones siguientes se describe cómo trabajar con la depuración remota de Lambda en el AWS Toolkit for Visual Studio Code.

Cómo funciona la depuración remota de Lambda

El AWS kit de herramientas permite la depuración remota modificando temporalmente las funciones de Lambda con una capa de depuración de Lambda adicional y ampliando el límite de tiempo de espera de invocación de Lambda a 900 segundos. Se establece una conexión segura entre el depurador local y el entorno de tiempo de ejecución Lambda mediante la opción de Túnel seguro de AWS IoT . Esta conexión permite utilizar los puntos de interrupción del código local para procesar la función a medida que se ejecuta de forma remota. Una vez finalizada la sesión de depuración, todas las modificaciones temporales se revierten automáticamente a su configuración original.

Introducción

Tiempos de ejecución admitidos

La depuración remota de Lambda es compatible con los siguientes tiempos de ejecución.

  • Python (Amazon Linux 2023)

  • Java

  • JavaScript/Node.js (Amazon Linux 2023)

Requisitos previos

Antes de comenzar, se deben cumplir los siguientes requisitos previos:

  • Debe tener AWS credenciales válidas configuradas en el AWS kit de herramientas. Para obtener información adicional sobre la instalación del AWS kit de herramientas y la configuración de sus credenciales, consulte el tema Introducción de esta guía del usuario.

  • Se ha implementado una función Lambda en su AWS cuenta. Para obtener más información sobre la implementación de una función de Lambda, consulte el tema Creación de su primera función de Lambda de la Guía para desarrolladores de AWS Lambda.

  • Debe tener la política AWS Identity and Access Management (de IAM) y los permisos adecuados para depurar su función. Para obtener más información sobre los permisos de Lambda, consulte el tema Políticas administradas de AWS para AWS Lambda de la Guía para desarrolladores de AWS Lambda. A continuación, se muestra un ejemplo de una política que contiene los permisos mínimos necesarios para trabajar con la depuración remota de Lambda en el kit de herramientas de AWS .

    nota

    La depuración remota se habilita mediante AWS AWS IoT Secure Tunneling. Esta opción permite que el depurador local establezca una conexión segura con el entorno de tiempo de ejecución Lambda.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetLayerVersion", "lambda:UpdateFunctionConfiguration", "lambda:InvokeFunction", "lambda:PublishVersion", "lambda:DeleteFunction", "iot:CloseTunnel", "iot:OpenTunnel", "iot:RotateTunnelAccessToken", "iot:ListTunnels" ], "Resource": "*" } ] }

Acceso a la depuración remota de Lambda

Existen dos rutas principales para acceder a la depuración remota de Lambda en el AWS kit de herramientas: el AWS explorador o el explorador de Application Builder. Desde el AWS explorador, puede acceder a la depuración remota de Lambda a través de sus nodos. AWS Lambda Desde el explorador Desarrollador de aplicaciones, puede acceder a la depuración remota de Lambda a través de los proyectos de AWS SAM locales.

Acceso a la depuración remota de Lambda desde el explorador AWS
  1. En VS Code, abra la extensión AWS Toolkit.

  2. Desde el AWS kit de herramientas, expande el AWS explorador.

  3. En el explorador, expanda el nodo de Lambda.

  4. Vaya a la función que desee depurar y, a continuación, elija el icono Invocar remotamente en el menú contextual para abrir la pantalla Configuración de invocación remota.

Acceso a la depuración remota de Lambda desde el explorador Desarrollador de aplicaciones
  1. En VS Code, abre la extensión AWS Toolkit.

  2. Desde el AWS kit de herramientas, expanda el explorador del generador de aplicaciones.

  3. En el explorador, expanda el proyecto de AWS SAM que contiene el proyecto de Lambda que quiere depurar.

  4. Expanda la función de Lambda implementada que desea depurar.

  5. Vaya a la función remota y, a continuación, elija el icono Invocar remotamente en el menú contextual para abrir la pantalla Remote invoke configuration.

Uso de la depuración remota de Lambda

En las secciones siguientes se describe cómo trabajar con la depuración remota de Lambda en el AWS Toolkit for Visual Studio Code.

nota

Las funciones de Lambda tienen un límite de cinco capas y un límite combinado de 250 MB para el código de la función y todas las capas adjuntas. Para ejecutarse, la depuración remota de Lambda necesita disponer de al menos una capa libre.

Configuración de una sesión de depuración

Antes de empezar, configure la sesión de depuración mediante el procedimiento que se indica a continuación:

  1. Abra el menú de configuración de invocación remota completando el procedimiento de depuración remota de Lambda desde AWS el explorador o el procedimiento de depuración remota de Acceso a Lambda desde el explorador de Application Builder, que se encuentra en la sección anterior.

  2. En el menú Configuración de invocación remota, seleccione la casilla Depuración remota para mostrar las propiedades correspondientes a esta.

  3. Especifique la Ruta raíz local al archivo de controlador local.

    nota

    La ruta raíz local es la ubicación de su código fuente que coincide con la función de Lambda implementada. Si trabaja desde una función implementada en el explorador Desarrollador de aplicaciones, la ruta raíz local se detecta de forma automática.

    Si no tiene el código fuente almacenado de forma local, elija el botón Descargar código remoto para recuperar el código fuente de la función de Lambda. Al hacerlo, se abre el handler file en el editor de VS Code.

  4. En la sección Payload, especifique dónde se obtienen los datos del evento de prueba.

Establecimiento de puntos de interrupción y depuración

Establezca puntos de interrupción e inicie la depuración mediante el siguiente procedimiento:

  1. En el handler file del editor de VS Code, haga clic en el margen interior para establecer puntos de interrupción en los números de línea donde quiera poner la depuración en pausa.

  2. Cuando esté conforme con los puntos de interrupción, vuelva al menú Remote invoke configuration para comprobar que la configuración de sus ajustes es correcta y, a continuación, elija el botón Remote invoke para iniciar la depuración.

  3. El AWS kit de herramientas actualiza la función Lambda con capacidades de depuración, establece un túnel seguro para la sesión de depuración, invoca la función con la carga útil especificada y, a continuación, detiene el proceso cuando alcanza un punto de interrupción.

  4. En una pausa de punto de interrupción use el panel Ejecución y depuración para ver sus Variables, Pila de llamadas y Puntos de interrupción.

Actualización y pruebas de la función

Para modificar el código y probar los cambios con una implementación rápida, realice el procedimiento siguiente:

  1. Con la sesión de depuración activa, realice cambios en el handler file del editor de VS Code.

  2. Guarde los cambios (Command+S on macOS,Ctrl+S on Windows).

  3. Cuando se le solicite, confirme que desea continuar con la implementación de los cambios. El AWS kit de herramientas actualizará la función Lambda con el código modificado.

  4. Siga depurando y probando los cambios mediante el establecimiento de nuevos puntos de interrupción y la selección del botón Invocación remota de nuevo.

    nota

    Como alternativa, puede anular la selección de la opción Attach debugger en los controles de depuración de VS Code y elegir el botón Remote invoke para ejecutar la función sin depurar.

Finalización de una sesión de depuración

Cada una de las siguientes opciones finaliza la sesión de depuración remota y elimina la capa de depuración del proyecto:

  • Seleccione la opción Remove Debug Setup en la pantalla Remote invoke configuration.

  • Seleccione el icono de desconexión en los controles de depuración de VS Code.

  • Cierre el handler file en el editor de VS Code.

nota

Tome nota de lo siguiente:

  • La capa de depuración de Lambda se elimina automáticamente después de 60 segundos de inactividad. El tiempo empieza a contar tras la última invocación.

  • Si realizó cambios de código en sus funciones gestionadas infrastructure-as-code (IaC) (AWS SAM, AWS CDK, Terraform) durante el proceso de depuración, guárdelos en su proyecto local y considere la posibilidad de actualizar su repositorio de control de código fuente. Los cambios no guardados se sobrescriben cuando se vuelve a implementar la función IaC.

  • Si ha realizado cambios temporales solo con fines de depuración, puede que quiera volver a implementar la función desde el control de origen para asegurarse de que coincide con el código de producción.

Solución de problemas y casos de uso avanzados

Si se produce un error en la sesión de depuración, inicie el proceso de solución de problemas mediante estos pasos:

  1. Actualice el AWS kit de herramientas a la última versión.

  2. Actualice la vista web; para ello, cierre la vista web Configuración de invocación remota y vuelva a abrirla.

  3. Cierre VS Code por completo y vuelva a abrirlo a fin de reiniciarlo.

  4. Abra la paleta de comandos de VS Code, escriba el comando AWS: Reset Lambda Remote Debugging Snapshot y selecciónelo cuando aparezca en los resultados para restablecer la instantánea de depuración remota de Lambda.

  5. Si no puede solucionar el problema, envíe un problema a AWS Toolkit for Visual Studio Code GitHub Problemas.

Caso de uso avanzado: configuración de firma de código

La depuración remota requiere adjuntar una capa de depuración a la función de Lambda. Si la función tiene habilitada y aplicada la configuración de firma de código, el AWS kit de herramientas no podrá adjuntar automáticamente la capa de depuración a la función.

Existen dos opciones para resolver el problema de configuración de firma de código.

  • Elimine temporalmente la firma de código.

  • Use una capa de depuración firmada.

Eliminación temporal de la firma de código

Actualice la configuración de firma de código mediante el establecimiento de UntrustedArtifactOnDeployment : Warn y, a continuación, vuelva a habilitarla como Enforced una vez completado el proceso de depuración.

Para obtener más información, consulta la UpdateCodeSigningConfigreferencia en la Referencia de la API.AWS Lambda

Uso de una capa de depuración firmada

  1. Desde Depuración remota de Lambda en el AWS kit de herramientas, amplíe la sección de configuración adicional de Depuración remota.

  2. En la sección Configuración adicional de depuración remota, copie el nombre de recurso de Amazon (ARN) de la capa de región del campo Anulación de capa.

  3. Desde AWS CLI, utilice el siguiente comando para descargar la versión aws lambda get-layer-version-by-arn --arn layer-arn de la capa y sustituya layer-arn por el ARN de su capa. Para obtener instrucciones detalladas sobre cómo descargar la capa de depuración firmada, consulte la referencia get-layer-version-by-arn en la Referencia de comandos.AWS CLI

  4. Firme la capa con su configuración de firma de código y publíquela en su cuenta. Para obtener instrucciones sobre la firma y la publicación, consulta el tema Cómo configurar la firma de código para tu AWS SAM aplicación en la AWS Serverless Application Model Guía para desarrolladores.

  5. Una vez que la capa se haya firmado y publicado en su cuenta, vuelva a la sección Configuración adicional de depuración remota de la depuración remota de Lambda y, a continuación, escriba el nuevo ARN de la capa en el campo Anulación de capa. Una vez completado el proceso, la depuración remota de Lambda utiliza la capa firmada en lugar de la predeterminada.

Regiones admitidas

El siguiente error se produce cuando una región no admite la depuración remota.

Region ${region} doesn't support remote debugging yet

A continuación se muestra una lista de las regiones admitidas:

  • ap-east-1

  • ap-northeast-1

  • ap-northeast-2

  • ap-south-1

  • ap-southeast-1

  • ap-southeast-2

  • ca-central-1

  • eu-central-1

  • eu-north-1

  • eu-west-1

  • eu-west-2

  • eu-west-3

  • me-central-1

  • me-south-1

  • sa-east-1

  • us-east-1

  • us-east-2

  • us-west-1

  • us-west-2

Lambda RequestEntityTooLargeException

Las funciones de Lambda tienen un límite de cinco capas y un límite combinado de 250 MB para el código de la función y todas las capas adjuntas. La capa de depuración remota tiene aproximadamente 40 MB, lo que puede hacer que la función supere este límite si tiene un paquete de funciones de gran tamaño o varias capas. Para obtener más información, consulte la sección Lambda: InvalidParameterValueException o RequestEntityTooLargeException tema de la Guía para AWS Lambda desarrolladores.

En la lista siguiente se describen distintas formas de solucionar y corregir este error:

  • Reducir el tamaño de la función: optimice el código de la función y elimine las dependencias innecesarias.

  • Eliminar las capas no utilizadas: elimine de forma temporal las capas no esenciales durante la depuración.

  • Utilizar dependencias externas: mueva las dependencias grandes a un almacenamiento externo, como Amazon S3, y cárguelas en tiempo de ejecución.

Superación de la cuota del túnel seguro de IoT

A continuación, se muestra un ejemplo del error de superación de la cuota de túnel que se produce cuando se alcanza el límite diario de conexiones de tunelización AWS IoT seguras en la depuración remota de Lambda.

Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels

AWS IoT Las conexiones de Secure Tunneling tienen las siguientes cuotas:

  • El túnel seguro de IoT de capa gratuita tiene asignadas diez conexiones al día.

  • Cada túnel admite una instancia de VS Code durante un máximo de doce horas.

  • La cuota se aplica por AWS cuenta y por día.

Si se produce el error de tunelización AWS IoT segura, espera a que se restablezca la cuota diaria o ponte en contacto con el servicio de AWS asistencia para solicitar un aumento del límite de cuota. Para obtener la información AWS de contacto de soporte, consulta el portal de contacto de AWS soporte. Para obtener información detallada sobre la tunelización AWS IoT segura, consulte el tema de la tunelización AWS IoT segura en la Guía para desarrolladores.AWS IoT

Depuración de funciones TypeScript Lambda con mapas de origen

En las siguientes secciones se describe cómo depurar las funciones de TypeScript Lambda con mapas de origen.

Requisitos previos

Para depurar las funciones de TypeScript Lambda, se deben cumplir los siguientes requisitos previos.

  • TypeScript Debe cumplir con la opción de mapa de origen habilitada. Para obtener información adicional, consulte el tema de soporte del mapa JavaScript fuente en la documentación de VS Code.

  • Para trabajar con mapas de origen en línea, todos los cambios deben volver a implementarse en la nube.

Configuración

Para configurar la depuración remota de Lambda para las funciones de TypeScript Lambda en el AWS kit de herramientas, complete los siguientes pasos.

  1. Desde el AWS kit de herramientas, expanda el explorador. AWS

  2. En el explorador, expanda el nodo de Lambda.

  3. Navegue hasta la función para la que desee configurar y, a continuación TypeScript, seleccione el icono de invocación remota en el menú contextual para abrir la pantalla de configuración de la invocación remota.

  4. Seleccione la casilla Depuración remota para habilitar la configuración remota.

  5. Apunte al directorio que contiene su TypeScript handler file a fin de configurar la ruta raíz local.

    nota

    En el TypeScript handler file se establecen los puntos de interrupción de la depuración.

  6. Expanda la opción de Configuración adicional de depuración remota.

  7. Seleccione la casilla Mapa de origen para habilitar los mapas de origen.

  8. Establezca el campo Archivos de salida en el directorio local de la copia de la función de Lambda.

    Si app.js y app.map están en .aws-sam/build/HelloWorldFunction, establezca la ubicación de los archivos de salida en /Users/user/project/aws-sam/build/HelloWorldFunction/*.

    nota

    La ruta del archivo de salida debe ser absoluta.

  9. Cuando esté satisfecho con los ajustes, pulse el botón de invocación remota para empezar a depurar la función. TypeScript