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 siguientes secciones se describe cómo trabajar con la depuración remota de Lambda en. 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 ejecución de Lambda AWS IoT mediante Secure Tunneling. Esta conexión le permite utilizar los puntos de interrupción del código local para recorrer 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 restablecen automáticamente a su configuración original.
Introducción
Tiempos de ejecución admitidos
La depuración remota de Lambda admite los siguientes tiempos de ejecución.
-
Python (Amazon Linux 2023)
-
Java
-
JavaScript/Node.js (Amazon Linux 2023)
Requisitos previos
Antes de empezar, 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 Lambda, consulte el tema Cómo crear su primera función Lambda en la Guía para desarrolladores. AWS Lambda
-
Debe tener la política AWS Identity and Access Management (de IAM) y los permisos adecuados para depurar la función. Para obtener información adicional sobre los permisos de Lambda, consulte las políticas AWS administradas del AWS Lambda tema en la Guía para AWS Lambdadesarrolladores. El siguiente es 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. AWS
nota
La depuración remota se habilita mediante Secure Tunneling. AWS AWS IoT Esto permite que el depurador local establezca una conexión segura con el entorno de ejecución de 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 de Application Builder, puede acceder a la depuración remota de Lambda a través de sus proyectos locales. AWS SAM
Acceso a la depuración remota de Lambda desde el explorador AWS
-
En VS Code, abra la extensión AWS Toolkit.
-
Desde el AWS kit de herramientas, expande el AWS explorador.
-
Desde el explorador, expanda el nodo Lambda.
-
Navegue hasta la función que desee depurar y, a continuación, seleccione el icono Invocar de forma remota en el menú contextual para abrir la pantalla de configuración de la invocación remota.
Acceso a la depuración remota de Lambda desde el explorador de Application Builder.
-
En VS Code, abra la extensión AWS Toolkit.
-
Desde el AWS kit de herramientas, expanda el explorador del generador de aplicaciones.
-
Desde el explorador, amplíe el
AWS SAM
proyecto que contiene el proyecto Lambda que desea depurar. -
Amplíe la
Lambda
función desplegada que desee depurar. -
Navegue hasta la función remota y, a continuación, seleccione el icono Invocar de forma remota en el menú contextual para abrir la pantalla de configuración de la invocación remota.
Uso de la depuración remota de Lambda
En las siguientes secciones se describe cómo trabajar con la depuración remota de Lambda en. AWS Toolkit for Visual Studio Code
nota
Las funciones Lambda tienen un límite de 5 capas y un límite combinado de 250 MB para el código de la función y todas las capas adjuntas. La depuración remota de Lambda requiere al menos 1 capa libre para ejecutarse.
Configurar una sesión de depuración
Antes de empezar, configure la sesión de depuración siguiendo el siguiente procedimiento.
-
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.
-
En el menú de configuración de invocación remota, seleccione la casilla de verificación Depuración remota para mostrar las propiedades de depuración remota.
-
Especifique la ruta raíz local al archivo de su controlador local.
nota
La ruta raíz local es la ubicación del código fuente que coincide con la función Lambda implementada. Si trabaja desde una función implementada en el explorador de Application Builder, la ruta raíz local se detecta automáticamente.
Si no tiene el código fuente almacenado localmente, pulse el botón Descargar código remoto para recuperar el código fuente de la función Lambda. Esto lo abrirá
handler file
en el editor de VS Code. -
En la sección Carga útil, especifica dónde se obtienen los datos del evento de prueba.
Establecimiento de puntos de interrupción y depuración
Establezca los puntos de interrupción y comience a depurar siguiendo el siguiente procedimiento.
-
Desde el editor de VS Code, haga clic en el margen para establecer puntos de interrupción en los números de línea en los que desee detener la depuración.
handler file
-
Cuando esté satisfecho con los puntos de interrupción, regrese al menú de configuración de invocación remota para comprobar que sus ajustes estén configurados correctamente y, a continuación, pulse el botón de invocación remota para iniciar la depuración.
-
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.
-
En una pausa puntual, utilice el panel EJECUTAR Y DEPURAR para ver las VARIABLES, LA PILA DE LLAMADAS y LOS PUNTOS DE INTERRUPCIÓN.
Actualizar y probar tu función
Para modificar el código y probar los cambios con una implementación rápida, complete el siguiente procedimiento.
-
Con la sesión de depuración activa, realiza cambios en la tuya
handler file
en el editor de VS Code. -
Guarda tus cambios (
Command+S on macOS
,Ctrl+S on Windows
) -
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.
-
Siga depurando y probando los cambios estableciendo nuevos puntos de interrupción y volviendo a seleccionar el botón de invocación remota.
nota
Como alternativa, puedes deseleccionar la opción Adjuntar depurador en los controles de depuración de VS Code y seleccionar el botón de invocación remota para ejecutar tu función sin depurar.
Finalizar 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 Eliminar la configuración de depuración en la pantalla de configuración de invocación remota.
-
Elegir el icono de desconexión en los controles de depuración de VS Code.
-
Cerrando 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 tras 60 segundos de inactividad. El recuento comienza cuando se completa 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 únicamente con fines de depuración, puede que desee volver a implementar la función desde el control de código fuente 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 siguiendo estos pasos.
Actualice el AWS kit de herramientas a la versión más reciente.
Actualice la vista web cerrando la vista web de configuración de invocación remota y volviéndola a abrir.
Reinicie VS Code cerrándolo por completo y volviéndolo a abrir.
Abra la paleta de comandos de VS Code e introduzca el comando
AWS: Reset Lambda Remote Debugging Snapshot
, selecciónelo cuando aparezca en los resultados para restablecer la instantánea de depuración remota de Lambda.
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 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 la firma de código.
Elimine temporalmente la firma de código.
Usa una capa de depuración firmada.
Eliminar temporalmente la firma de código
Actualice la configuración de firma de código mediante un ajuste yUntrustedArtifactOnDeployment : Warn
, a continuación, vuelva a habilitarla una Enforced
vez finalizado 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
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.
En la sección de configuración adicional de depuración remota, copia el ARN de la capa de región del campo de anulación de capa.
Desde AWS CLI, utilice el siguiente comando para descargar la versión
aws lambda get-layer-version-by-arn --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 CLIlayer-arn
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 Guía para AWS Serverless Application Model desarrolladores.
Una vez que la capa se haya firmado y publicado en su cuenta, vuelva a la sección de configuración adicional de Depuración remota de Depuración remota de Lambda y, a continuación, introduzca el ARN de la nueva capa en el campo Modificación de capa. Una vez finalizado el proceso, la depuración remota de Lambda utiliza la capa firmada en lugar de la capa predeterminada.
Regiones de admitidas
El siguiente error se produce cuando una región no admite la depuración remota.
Region ${region} doesn't support remote debugging yet
La siguiente es una lista de las regiones compatibles.
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 Lambda tienen un límite de 5 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 ocupa aproximadamente 40 MB, lo que puede provocar que la función supere este límite si tiene un paquete de funciones grande 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 siguiente lista se describen las formas de solucionar y corregir este error.
Reduzca el tamaño de la función: optimice el código de la función y elimine las dependencias innecesarias.
Elimine las capas no utilizadas: elimine temporalmente las capas no esenciales durante la depuración.
Utilice dependencias externas: mueva las dependencias grandes a un almacenamiento externo, como Amazon S3, y cárguelas en tiempo de ejecución.
Se ha superado la cuota de túneles seguros 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:
A los túneles seguros de IoT de nivel libre se les asignan 10 conexiones por día.
Cada túnel admite una instancia de VS Code durante un máximo de 12 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.
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 los mapas fuente integrados, 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.
-
En el AWS kit de herramientas, expanda el explorador. AWS
-
Desde el explorador, expanda el nodo Lambda.
-
Navegue hasta la función para la que desee configurar y, a continuación TypeScript, seleccione el icono Invocar remotamente en el menú contextual para abrir la pantalla de configuración de invocación remota.
Active la depuración remota seleccionando la casilla de verificación Depuración remota.
Configure su ruta raíz local apuntando al directorio que contiene su.
TypeScript handler file
nota
Ahí
TypeScript handler file
es donde estableces tus puntos de interrupción de depuración.Amplíe los ajustes de configuración adicionales de Remote Debug.
Active el mapeo de origen seleccionando la casilla de verificación Mapa de origen.
Establezca el campo Archivos de salida en el directorio local de la copia de la función Lambda.
Si
app.js
yapp.map
están dentro.aws-sam/build/HelloWorldFunction
, establezca la ubicación/Users/
de los archivos de salida.user
/project
/aws-sam/build/HelloWorldFunction
/*nota
La ruta del archivo de salida debe ser una ruta absoluta.
Cuando esté satisfecho con la configuración, pulse el botón de invocación remota para empezar a depurar TypeScript la función.