

# Depuración de forma remota de funciones de Lambda con Visual Studio Code
<a name="debugging"></a>

Con la característica de depuración remota de [AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/), puede depurar las funciones de Lambda que se ejecutan directamente en la nube de AWS. Esto resulta útil cuando se investigan problemas que son difíciles de replicar de forma local o que solo se diagnostican con registros.

Con la depuración remota, puede:
+ Establecer puntos de interrupción en el código de su función de Lambda.
+ Realizar la ejecución del código en tiempo real.
+ Inspeccionar las variables y el estado durante el tiempo de ejecución.
+ Depurar las funciones de Lambda implementadas en AWS, incluidas las de las VPC o con permisos de IAM específicos.

## Tiempos de ejecución admitidos
<a name="debugging-runtimes"></a>

La depuración remota es compatible con los siguientes tiempos de ejecución:
+ Python (AL2023)
+ Java
+ JavaScript/Node.js (AL2023)

**nota**  
La depuración remota es compatible con las arquitecturas x86\$164 y arm64.

## Seguridad y depuración remota
<a name="debugging-security"></a>

La depuración remota funciona dentro de los límites de seguridad de Lambda existentes. Los usuarios pueden adjuntar capas a una función mediante el permiso `UpdateFunctionConfiguration`, que ya tiene la capacidad de acceder a las variables de entorno y a la configuración de la función. La depuración remota no se extiende más allá de estos permisos existentes. En su lugar, agrega controles de seguridad adicionales mediante una tunelización segura y una administración automática de las sesiones. Además, la depuración remota es una característica totalmente controlada por el cliente que requiere permisos y acciones explícitos:
+ **Creación de túneles seguros de IoT**: el Toolkit de AWS debe crear un túnel seguro de IoT, lo que solo ocurre con el permiso explícito del usuario mediante `iot:OpenTunnel`.
+ **Administración de archivos adjuntos y tokens de la capa de depuración**: el proceso de depuración mantiene la seguridad mediante estos controles:
  + La capa de depuración debe estar asociada a la función de Lambda y este proceso requiere los siguientes permisos: `lambda:UpdateFunctionConfiguration` y `lambda:GetLayerVersion`.
  + Se debe actualizar un token de seguridad (generado mediante `iot:OpenTunnel`) en la variable de entorno de la función antes de cada sesión de depuración, lo que requiere `lambda:UpdateFunctionConfiguration`.
  + Por motivos de seguridad, este token se rota automáticamente y la capa de depuración se elimina automáticamente al final de cada sesión de depuración y no se puede volver a utilizar.

**nota**  
La depuración remota es compatible con las arquitecturas x86\$164 y arm64.

## Requisitos previos
<a name="debugging-prerequisites"></a>

Antes de comenzar la depuración remota, asegúrese de que dispone de lo siguiente:

1. Una función de Lambda implementada en su cuenta de AWS.

1. AWS Toolkit for Visual Studio Code. Consulte [Configuración del AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) para ver las instrucciones de instalación.

1. Debe tener instalada la versión **3.69.0** o posterior del Toolkit de AWS.

1. Credenciales de AWS configuradas en AWS Toolkit for Visual Studio Code. Para obtener más información, consulte [Autenticación y control de acceso](foundation-iac-local-development.md#lambda-functions-vscode-authentication-and-access-control).

## Depuración remota de las funciones de Lambda
<a name="debugging-procedure"></a>

Siga estos pasos para iniciar una sesión de depuración remota:

1. Abra AWS Explorer en VS Code seleccionando el icono AWS en la barra lateral izquierda.

1. Expanda la sección de Lambda para ver sus funciones.

1. Haga clic con el botón derecho en la función que desee depurar.

1. En el menú contextual, seleccione **Invocar remotamente**.

1. En la ventana de invocación que se abre, marque la casilla **Habilitar depuración**.

1. Haga clic en **Invocar** para iniciar la sesión de depuración remota.

**nota**  
Las funciones de Lambda tienen 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 agrega aproximadamente 40 MB al tamaño de la función.

Una sesión de depuración remota finaliza cuando:
+ Selecciona **Eliminar configuración de depuración** en la pantalla de configuración de invocación remota.
+ Selecciona el icono de desconexión en los controles de depuración de VS Code.
+ Selecciona el archivo de controlador en el editor de VS Code.

**nota**  
La capa de depuración se elimina automáticamente después de 60 segundos de inactividad tras su última invocación.

## Deshabilitación de la depuración remota
<a name="debugging-disable"></a>

Hay tres formas de deshabilitar esta característica:
+ **Denegar actualizaciones de funciones**: establezca `lambda:UpdateFunctionConfiguration` en `deny`.
+ **Restringir los permisos de IoT**: deniegue los permisos relacionados con el IoT
+ **Bloquear capas de depuración**: deniegue `lambda:GetLayerVersion` para los siguientes ARN:
  + `arn:aws:lambda:*:*:layer:LDKLayerX86:*`
  + `arn:aws:lambda:*:*:layer:LDKLayerArm64:*`
**nota**  
Al deshabilitar esta característica, se impide agregar la capa de depuración durante las actualizaciones de la configuración de la función.

## Información adicional
<a name="debugging-related-info"></a>

Para obtener más información sobre el uso de Lambda en VS Code, consulte [Desarrollo local de funciones de Lambda con VS Code](foundation-iac-local-development.md).

Para obtener instrucciones detalladas sobre la solución de problemas, los casos de uso avanzados y la disponibilidad regional, consulte [Depuración remota de funciones de Lambda](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-remote-debug.html) en la Guía del usuario de AWS Toolkit for Visual Studio Code.