

# Depure remotamente as funções do Lambda com o Visual Studio Code
<a name="debugging"></a>

Com o atributo de depuração remota no [AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/), você pode depurar suas funções do Lambda em execução diretamente na nuvem da AWS. Isso é útil ao investigar problemas que são difíceis de replicar localmente ou diagnosticar somente com logs.

Com a depuração remota, você pode:
+ Definir pontos de interrupção no código da função do Lambda.
+ Analisar a execução do código em tempo real.
+ Inspecionar as variáveis e o estado durante o runtime.
+ Depure as funções do Lambda implantadas para a AWS, incluindo aquelas em VPCs ou com permissões específicas do IAM.

## Tempos de execução compatíveis
<a name="debugging-runtimes"></a>

A depuração remota é compatível com os seguintes tempos de execução:
+ Python (AL2023)
+ Java
+ JavaScript/Node.js (AL2023)

**nota**  
A depuração remota é compatível com arquiteturas x86\$164 e arm64.

## Segurança e depuração remota
<a name="debugging-security"></a>

A depuração remota opera dentro dos limites de segurança existentes do Lambda. Os usuários podem anexar camadas a uma função usando a permissão `UpdateFunctionConfiguration`, que já tem a capacidade de acessar as variáveis e a configuração do ambiente da função. A depuração remota não se estende além dessas permissões existentes. Em vez disso, ela adiciona controles de segurança extras por meio de tunelamento seguro e gerenciamento automático de sessões. Além disso, a depuração remota é um atributo totalmente controlado pelo cliente que requer permissões e ações explícitas:
+ **Criação de túnel seguro de IoT**: o AWS Toolkit deve criar um túnel seguro de IoT, que só ocorre com a permissão explícita do usuário usando o `iot:OpenTunnel`.
+ **Anexo da camada de depuração e gerenciamento de tokens**: o processo de depuração mantém a segurança por meio desses controles:
  + A camada de depuração deve ser anexada à função do Lambda e esse processo requer as seguintes permissões: `lambda:UpdateFunctionConfiguration` e `lambda:GetLayerVersion`.
  + Um token de segurança (gerado via `iot:OpenTunnel`) deve ser atualizado na variável de ambiente da função antes de cada sessão de depuração, o que também exige `lambda:UpdateFunctionConfiguration`.
  + Por segurança, esse token é rotacionado automaticaplamente e a camada de depuração é removida automaticamente no final de cada sessão de depuração e não pode ser reutilizada.

**nota**  
A depuração remota é compatível com arquiteturas x86\$164 e arm64.

## Pré-requisitos
<a name="debugging-prerequisites"></a>

Antes de iniciar a depuração remota, certifique-se de ter o seguinte:

1. Uma função do Lambda implantada em sua conta AWS.

1. AWS Toolkit for Visual Studio Code: Para obter as instruções de instalação, consulte [Como configurar o AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html).

1. A versão do AWS Toolkit que você instalou é a **3.69.0** ou mais recente.

1. Credenciais da AWS configuradas no AWS Toolkit for Visual Studio Code. Para obter mais informações, consulte [Autenticação e controle de acesso](foundation-iac-local-development.md#lambda-functions-vscode-authentication-and-access-control).

## Depure remotamente as funções do Lambda
<a name="debugging-procedure"></a>

Siga estas etapas para iniciar uma sessão de depuração remota:

1. Abra o AWS Explorer no VS Code selecionando o ícone da AWSna barra lateral esquerda.

1. Expanda a seção Lambda para ver suas funções.

1. Clique com o botão direito do mouse na função que você deseja depurar.

1. No menu de contexto, selecione **Invocar remotamente**.

1. Na janela de invocação que se abre, marque a caixa **Habilitar depuração**.

1. Clique em **Invocar** para iniciar a sessão de depuração remota.

**nota**  
As funções do Lambda têm um limite combinado de 250 MB para o código da função e todas as camadas anexadas. A camada de depuração remota adiciona aproximadamente 40 MB ao tamanho da sua função.

Uma sessão de depuração remota termina quando você:
+ Escolhe **Remover Configuração de Depuração** na tela de configuração de invocação remota.
+ Seleciona o ícone de desconexão nos controles de depuração do VS Code.
+ Seleciona o arquivo do manipulador no editor do VS Code.

**nota**  
A camada de depuração é removida automaticamente após 60 segundos de inatividade após sua última invocação.

## Desabilite a depuração remota
<a name="debugging-disable"></a>

Há três maneiras de desabilitar esse atributo:
+ **Negar atualizações da função**: defina `lambda:UpdateFunctionConfiguration` como `deny`.
+ **Restrinja as permissões de IoT** negue permissões relacionadas à IoT
+ **Bloquear camadas de depuração**: negue `lambda:GetLayerVersion` para os seguintes ARNs:
  + `arn:aws:lambda:*:*:layer:LDKLayerX86:*`
  + `arn:aws:lambda:*:*:layer:LDKLayerArm64:*`
**nota**  
A desabilitação desse atributo impede que a camada de depuração seja adicionada durante as atualizações de configuração da função.

## Mais informações
<a name="debugging-related-info"></a>

Para obter mais informações sobre o uso do Lambda no VS Code, consulte [Como desenvolver funções do Lambda localmente com o VS Code](foundation-iac-local-development.md).

Para obter instruções detalhadas sobre solução de problemas, casos de uso avançados e disponibilidade regional, consulte [Depuração remota de funções do Lambda](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-remote-debug.html) no Guia do usuário do AWS Toolkit for Visual Studio Code.