View a markdown version of this page

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 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 depurar paso a paso sin modificar su flujo de trabajo de desarrollo existente.

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

  • Typescript/JavaScript/Node.js (Amazon Linux 2023)

nota

La depuración remota de Lambda no admite las instancias administradas por Lambda ni los tipos de funciones de imagen OCI.

Requisitos previos

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

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

  • Se ha implementado una función de 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 contar con la política AWS Identity and Access Management (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:OpenTunnel", "iot:RotateTunnelAccessToken", "iot:ListTunnels" ], "Resource": "*" } ] }

Acceso a la depuración remota de Lambda

Hay dos rutas principales para acceder a la depuración remota de Lambda en el AWS kit de herramientas: el explorador o el AWS 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.

Acceder a la depuración remota de Lambda desde AWS explorador
  1. Desde VS Code, abra la extensión AWS Toolkit.

  2. Desde el AWS kit de herramientas, expanda 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. Desde VS Code, abra 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. Para abrir el menú de configuración de la invocación remota, complete el procedimiento Acceso a la depuración remota de Lambda desde el AWS explorador o Acceso a la depuración remota de 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 de Lambda con funciones 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 llega a 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 de 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 modificaste el código de tus funciones administradas por infraestructura como código (IaC) (, Terraform) durante el proceso de depuración AWS SAM AWS CDK, guárdalas en tu proyecto local y considera actualizar tu 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.

Depuración de funciones de Lambda con mapas fuente TypeScript

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 estar compilado con la opción de mapa fuente habilitada. Para obtener información adicional, consulte el tema de soporte del mapa JavaScript fuente en la documentación de VS Code.

  • In-line no se admiten los mapas de origen. Debe usar un .js.map archivo independiente para almacenar el mapa de origen.

Configuración

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

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

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

  3. Navegue hasta la función que desea configurar y, a continuación TypeScript, seleccione el icono Invocar de forma 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.

    ejemplo

    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.

    Para cualquier AWS SAM AWS CDK proyecto, el AWS kit de herramientas admite la detección automática del mapa fuente. Si el campo Salir archivos se deja vacío para estos proyectos, el kit de herramientas intentará detectar automáticamente la ubicación del mapa de origen.

  9. Cuando estés satisfecho con la configuración, selecciona el botón de invocación remota para empezar a depurar la función. TypeScript

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. Actualiza el AWS kit de herramientas a la versión más reciente.

  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 puedes solucionar el problema, envía una incidencia a AWS Toolkit for Visual Studio Code GitHub Issues.

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 tu función tiene habilitada y aplicada la configuración de firma de código, el AWS kit de herramientas no puede adjuntar automáticamente la capa de depuración a tu 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 UpdateCodeSigningConfig referencia en la referencia de la API. AWS Lambda

Uso de una capa de depuración firmada

  1. Desde la depuración remota de Lambda en el AWS kit de herramientas, expanda 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 la capa. Para obtener instrucciones detalladas sobre cómo descargar la capa de depuración firmada, consulte la referencia get-layer-version-by-arn de la Referencia de los comandos de la 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 Configurar la firma de código para tu AWS SAM aplicación en la Guía para desarrolladores. AWS Serverless Application Model

  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.

Caso de uso avanzado: depuración de funciones con simultaneidad SnapStart o aprovisionamiento

En el caso de las funciones de Lambda configuradas SnapStart o aprovisionadas con simultaneidad, la publicación de una nueva versión lleva mucho más tiempo. Para acelerar el flujo de trabajo de depuración, puede configurar la depuración remota de Lambda para actualizar solo la $LATEST versión de su función en lugar de publicar una nueva versión.

  1. En la pantalla de configuración de la invocación remota, expanda los ajustes de configuración adicionales de la depuración remota.

  2. Anule la selección de la opción Publicar versión.

  3. El AWS kit de herramientas ahora solo actualizará la $LATEST versión de la función y depurará con ella.

nota

Como efecto secundario de la depuración con la $LATEST versión, debes evitar otro tráfico que pueda invocar tu $LATEST versión para garantizar un entorno de depuración sin interrupciones.

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 la sección RequestEntityTooLargeException sobre temas 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.

Solución de problemas de depuración en Java

Para depurar una función de Java Lambda, debe tener instalada localmente la misma versión de Java que coincida con la versión de ejecución de la función de Lambda.

Por ejemplo, al depurar una función de Java 25, debe tener Java 25 instalado en el entorno local en el que se ejecuta el AWS kit de herramientas. Si intenta depurar una función de Java 25 con Java 21 o una versión anterior instalada localmente, la depuración remota no podrá detenerse en los puntos de interrupción que establezca.

Asegúrese de que la versión local de Java coincide con la versión de ejecución de la función de Lambda antes de iniciar una sesión de depuración.

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

El siguiente es 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 túnel 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:

  • Free-tier A los túneles seguros de IoT se les asignan 10 conexiones por 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, por día.

Si se produce un 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 contactos de AWS soporte. Para obtener información detallada sobre la construcción de túneles AWS IoT seguros, consulte el tema sobre la construcción de túneles AWS IoT seguros en la Guía para desarrolladores. AWS IoT