

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AWS Lambda depuração remota
<a name="lambda-remote-debug"></a>

 AWS Toolkit for Visual Studio Code Isso permite que você depure suas AWS Lambda funções que estão sendo executadas na nuvem, diretamente no VS Code. Com a depuração AWS Lambda remota, você pode inspecionar funções em execução, definir pontos de interrupção, examinar variáveis e depurar detalhadamente sem modificar o fluxo de trabalho de desenvolvimento existente.

As seções a seguir descrevem como trabalhar com a depuração remota do Lambda no AWS Toolkit for Visual Studio Code.

## Como funciona a depuração remota Lambda
<a name="w2aac17c43c19b7"></a>

O AWS kit de ferramentas permite a depuração remota modificando temporariamente suas funções do Lambda com uma camada adicional de depuração do Lambda e estendendo o limite de tempo limite de invocação do Lambda para 900 segundos. Uma conexão segura é estabelecida entre seu depurador local e o ambiente de execução do Lambda usando o AWS IoT Secure Tunneling. Essa conexão possibilita que você os seus pontos de interrupção de código local para percorrer a função enquanto ela é executada remotamente. Depois que a sessão de depuração for concluída, todas as modificações temporárias serão automaticamente revertidas para as configurações originais.

## Conceitos básicos
<a name="w2aac17c43c19b9"></a>

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

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

**nota**  
As instâncias gerenciadas do Lambda e os tipos de função de imagem OCI não são compatíveis com a depuração remota do Lambda.

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

Antes de começar, certifique-se de que os seguintes pré-requisitos sejam atendidos.
+ Você deve ter AWS credenciais válidas configuradas no AWS Toolkit. Para obter detalhes adicionais sobre como instalar o AWS Toolkit e configurar suas credenciais, consulte o tópico [Introdução](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html) neste guia do usuário. 
+ Uma função Lambda foi implantada em sua conta. AWS Para obter detalhes sobre a implantação de uma função do Lambda, consulte o tópico [Criar sua primeira função do Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html) no Guia do desenvolvedor *AWS Lambda*.
+ Você deve ter a política e as permissões apropriadas AWS Identity and Access Management (IAM) para depurar sua função. Para obter detalhes adicionais sobre as permissões do Lambda, consulte as [políticas AWS gerenciadas do AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html) no Guia do desenvolvedor *AWS Lambda*. Veja a seguir um exemplo de política que contém as permissões mínimas necessárias para trabalhar com a depuração remota do Lambda no AWS Toolkit.
**nota**  
A depuração remota é habilitada por meio AWS AWS IoT do Secure Tunneling. Isso permite que seu depurador local estabeleça uma conexão segura com o ambiente de execução do 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": "*"
      }
    ]
  }
  ```

## Acessar depuração remota do Lambda
<a name="w2aac17c43c19c11"></a>

Há dois caminhos principais para acessar a depuração remota do Lambda no AWS kit de ferramentas: o explorador ou o AWS explorador do Application Builder. No AWS explorador, você pode acessar a depuração remota do Lambda por meio de seus nós. AWS Lambda No explorador do Application Builder, é possível acessar a depuração remota do Lambda por meio de seus projetos locais AWS SAM .

**Acessando a depuração remota do Lambda a partir do explorador AWS**

1. No VS Code, abra a extensão AWS Toolkit.

1. No AWS Kit de ferramentas, expanda o AWS explorador.

1. No Explorer, expanda o nó **Lambda**.

1. Acesse a função que você deseja depurar e escolha o ícone **Invocar remotamente** no menu de contexto para abrir a tela de configuração de **invocação remota**.

**Acessando a depuração remota do Lambda a partir do explorador do Application Builder.**

1. No VS Code, abra a extensão AWS Toolkit.

1. No AWS Kit de ferramentas, expanda o explorador do construtor de aplicativos.

1. No explorador, expanda o projeto `AWS SAM` que contém o projeto Lambda que você deseja depurar.

1. Expanda a função `Lambda` implantada que você deseja depurar.

1. Navegue até a função remota e escolha o ícone **Invocar remotamente** no menu de contexto para abrir a tela de configuração de **Invocação remota**.

## Como trabalhar com depuração remota do Lambda
<a name="w2aac17c43c19c13"></a>

As seções a seguir descrevem como trabalhar com a depuração remota do Lambda no AWS Toolkit for Visual Studio Code.

**nota**  
As funções do Lambda têm um limite de 5 camadas combinado de 250 MB para o código da função e todas as camadas anexadas. A depuração remota Lambda requer pelo menos 1 camada livre para ser executada.

### Como configurar uma sessão de depuração
<a name="w2aac17c43c19c13b7"></a>

Antes de começar, configure sua sessão de depuração concluindo o procedimento a seguir.

1. Abra o menu de **configuração de invocação remota** concluindo o procedimento *Acessando a depuração remota do Lambda a partir do AWS explorador ou o procedimento Acessando a depuração* *remota do Lambda a partir do explorador do Application Builder, localizado na seção anterior*.

1. No menu **Configuração de invocação remota**, marque a caixa de seleção **Depuração remota** para exibir as propriedades de depuração remota.

1. Especifique o **Caminho raiz local** para seu arquivo manipulador local.
**nota**  
O caminho raiz local é a localização do seu código-fonte que corresponde à função do Lambda implantada. Se você estiver trabalhando em uma função implantada no explorador do Application Builder, seu caminho raiz local será detectado automaticamente.  
Se você não tiver o código-fonte armazenado localmente, escolha o botão **Baixar código remoto** para recuperar o código-fonte da função do Lambda. Isso abrirá o seu `handler file` no editor de código do VS Code.

1. Na seção **Carga útil**, especifique onde os dados do evento de teste são obtidos.

### Definir pontos de interrupção e depuração
<a name="w2aac17c43c19c13b9"></a>

Defina pontos de interrupção e comece a depuração concluindo o procedimento a seguir.

1. No `handler file` no editor de código do VS Code, clique na margem da medianiz para definir pontos de interrupção nos números das linhas em que você deseja pausar a depuração.

1. Quando estiver satisfeito com os pontos de interrupção, retorne ao menu **Configuração de invocação remota** para verificar se as configurações estão definidas corretamente e escolha o botão **Invocação remota** para iniciar a depuração.

1. O AWS kit de ferramentas atualiza sua função Lambda com recursos de depuração, estabelece um túnel seguro para a sessão de depuração, invoca sua função com a carga especificada e, em seguida, pausa o processo quando ele atinge um ponto de interrupção.

1. Em uma pausa no ponto de interrupção, use o painel **RUN AND DEBUG** para visualizar suas **VARIÁVEIS**, **PILHA DE CHAMADAS** e **PONTOS DE INTERRUPÇÃO**.

### Como atualizar e testar sua função
<a name="w2aac17c43c19c13c11"></a>

Para modificar seu código e testar alterações com uma implantação rápida, conclua o procedimento a seguir.

1. Com sua sessão de depuração ativa, faça alterações no seu `handler file` no editor de código do VS Code.

1. Salve as alterações (**Command\$1S on macOS**,**Ctrl\$1S on Windows**)

1. Quando solicitado, confirme que você deseja continuar com a implantação das alterações. O AWS kit de ferramentas atualizará sua função Lambda com o código modificado.

1. Continue depurando e testando suas alterações ao definir novos pontos de interrupção e selecionando o botão **Invocação remota** novamente.
**nota**  
 Como alternativa, você pode desmarcar a opção **Anexar depurador nos controles de depuração** do VS Code e escolher o botão **Invocação remota** para executar sua função sem depuração.

### Encerrar uma sessão de depuração
<a name="w2aac17c43c19c13c13"></a>

Cada uma das opções a seguir encerra a sessão de depuração remota e remove a camada de depuração do projeto.
+ Escolher **Remover Configuração de Depuração** na tela de **Configuração de invocação remota**.
+ Selecionar o ícone de **Desconectar** nos controles de depuração do VS Code.
+ Fechar o `handler file` no editor do VS Code.

**nota**  
Observe o seguinte:  
A camada de depuração do Lamba é removida automaticamente após 60 segundos de inatividade. A contagem começa quando sua última invocação é concluída.
Se você fez alterações de código em suas funções gerenciadas infrastructure-as-code (IaC) (AWS SAM, AWS CDK, Terraform) durante o processo de depuração, salve-as em seu projeto local e considere atualizar seu repositório de controle de origem. As alterações não salvas são sobrescritas quando sua função IaC é reimplantada.
Se você fez alterações temporárias apenas para fins de depuração, talvez queira reimplantar a função a partir do controle de origem para garantir que ela corresponda ao código de produção.

### Depuração de funções do TypeScript Lambda com mapas de origem
<a name="typescript-source-maps"></a>

As seções a seguir descrevem como depurar suas funções do TypeScript Lambda com mapas de origem.

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

Para depurar suas funções do TypeScript Lambda, os seguintes pré-requisitos devem ser atendidos.
+ Você TypeScript deve ser compilado com a opção de mapa de origem ativada. Para obter informações adicionais, consulte o tópico de [suporte do mapa de JavaScript origem](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support) na documentação do VS Code.
+ Não há suporte para mapas de origem em linha. Você deve usar um `.js.map` arquivo separado para armazenar o mapa de origem.

#### Configuração
<a name="w2aac17c43c19c13c15b7"></a>

Para configurar a depuração remota do Lambda para funções do TypeScript Lambda no kit de ferramentas, conclua as etapas AWS a seguir.

1. No AWS Kit de ferramentas, expanda o AWS explorador.

1. No Explorer, expanda o nó **Lambda**.

1. Navegue até a função para a qual você deseja configurar e escolha o ícone **Invocar remotamente** no menu de contexto para abrir a tela de configuração de **invocação remota**. TypeScript

1. Ative a depuração remota marcando a caixa de seleção **Depuração remota**.

1. Configure seu **Caminho raiz local** apontando para o diretório que contém seu `TypeScript handler file`.
**nota**  
O `TypeScript handler file` é onde você define seus pontos de interrupção de depuração.

1. Expanda as **Configurações adicionais de depuração remota**.

1. Ative o mapeamento de origem marcando a caixa de seleção **Mapa de origem**.

1. Defina o campo **Arquivos de saída** para o diretório local da cópia da função do Lambda.  
**Example**  

   Se `app.js` e `app.map` estiverem dentro de `.aws-sam/build/HelloWorldFunction`, defina a localização `/Users/user/project/aws-sam/build/HelloWorldFunction/*` dos **Arquivos de saída**.
**nota**  
O caminho do **Arquivo de saída** deve ser um caminho absoluto.  
Para AWS CDK projetos AWS SAM e projetos, o AWS Toolkit oferece suporte à detecção automática de mapas de origem. Se o campo **Arquivos de saída** for deixado vazio para esses projetos, o kit de ferramentas tentará detectar automaticamente a localização do mapa de origem.

1. Quando estiver satisfeito com as configurações, escolha o botão **Invocação remota** para começar a depurar sua função. TypeScript 

## Solução de problemas e casos de uso avançados
<a name="troubleshooting"></a>

Se sua sessão de depuração falhar, inicie o processo de solução de problemas concluindo estas etapas.

1. Atualize o AWS kit de ferramentas para a versão mais recente.

1. Atualize a visualização da web fechando e reabrindo a **Configuração de invocação remota**.

1. Reinicie o VS Code fechando-o completamente e reabrindo-o.

1. Abra a paleta de comandos do VS Code e insira o comando **AWS: Reset Lambda Remote Debugging Snapshot**, selecione-o quando ele for preenchido nos resultados para redefinir seu instantâneo de depuração remota do Lambda.

1. Se você não conseguir solucionar o problema, envie um problema para [AWS Toolkit for Visual Studio Code GitHubProblemas](https://github.com/aws/aws-toolkit-vscode/issues).

### Caso de uso avançado: configuração de assinatura de código
<a name="troubleshooting-code-signing-configuration"></a>

A depuração remota exige anexar uma camada de depuração à sua função do Lambda. Se sua função tiver a configuração de assinatura de código ativada e aplicada, o AWS Toolkit não poderá anexar automaticamente a camada de depuração à sua função.

Há duas opções para resolver o problema de configuração da assinatura de código:
+ Remover temporariamente a assinatura de código.
+ Usar uma camada de depuração assinada.

#### Como remover temporariamente a assinatura de código
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

Atualize a configuração de assinatura de código por meio da configuração `UntrustedArtifactOnDeployment : Warn`. Em seguida, reative-a `Enforced` após a conclusão do processo de depuração.

Para obter mais informações, consulte a [UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html)referência na *Referência AWS Lambda da API*.

#### Usando uma camada de depuração assinada
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1. **Em Depuração remota Lambda no AWS Toolkit, expanda a seção de configuração adicional de depuração remota.**

1. Na seção **Configuração adicional de depuração remota**, copie o ARN da camada de região do campo **Substituição de camada**.

1. A partir do AWS CLI, use o comando a seguir para baixar a versão da camada`aws lambda get-layer-version-by-arn --arn layer-arn`, substituindo *layer-arn pelo ARN* da sua camada. *Para obter instruções detalhadas sobre como baixar a camada de depuração assinada, consulte a referência [get-layer-version-by-arn](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) na Referência de Comandos.AWS CLI *

1. Assine a camada com sua configuração de assinatura de código e publique-a em sua conta. Para obter orientação sobre assinatura e publicação, consulte o tópico [Configurar assinatura de código para seu AWS SAM aplicativo](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html) no *Guia do AWS Serverless Application Model desenvolvedor*.

1. Depois que a camada for assinada e publicada em sua conta, retorne à seção de **Configuração adicional de depuração remota** do Lambda e insira o novo ARN da camada no campo **Substituição de camada**. Quando o processo estiver concluído, a depuração remota do Lambda usará sua camada assinada em vez da camada padrão.

### Caso de uso avançado: funções de depuração com SnapStart ou provisionada simultaneidade
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

Para funções Lambda configuradas SnapStart ou provisionadas com simultaneidade, a publicação de uma nova versão leva muito mais tempo. Para acelerar seu fluxo de trabalho de depuração, você pode configurar a depuração remota do Lambda para atualizar somente a versão da sua função em vez de publicar uma `$LATEST` nova versão.

1. Na tela de **configuração de invocação remota**, expanda as **configurações adicionais de depuração remota**.

1. Desmarque a opção **Publicar versão**.

1. Agora, o AWS Toolkit só atualizará a `$LATEST` versão da sua função e depurará usando-a.

**nota**  
Como efeito colateral da depuração com a `$LATEST` versão, você deve evitar outro tráfego que possa invocar sua `$LATEST` versão para garantir um ambiente de depuração sem interrupções.

### Regiões compatíveis
<a name="troubleshooting-regions"></a>

O erro a seguir ocorre quando uma região não oferece suporte à depuração remota.

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

Veja a seguir uma lista de regiões com suporte.
+ 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
<a name="troubleshooting-storage-limit"></a>

As funções do Lambda têm um limite de 5 camadas combinado de 250 MB para o código da função e todas as camadas anexadas. A camada de depuração remota tem aproximadamente 40 MB, o que pode fazer com que a função exceda esse limite se você tiver um pacote de funções grande ou várias camadas. Para obter detalhes adicionais, consulte a seção [Lambda: InvalidParameterValueException ou RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1) tópico no Guia do *AWS Lambda desenvolvedor*.

A lista a seguir descreve maneiras de solucionar e corrigir esse erro.
+ **Reduzir o tamanho da função**: otimize seu código de função e remova dependências desnecessárias.
+ **Remover as camadas não utilizadas**: remova temporariamente as camadas não essenciais durante a depuração.
+ **Usar dependências externas**: mova dependências grandes para armazenamento externo, como o Amazon S3, e carregue-as em tempo de execução.

### Solução de problemas de depuração Java
<a name="troubleshooting-java-debugging"></a>

Para depurar uma função Java Lambda, você deve ter a mesma versão Java instalada localmente que corresponda à versão de tempo de execução da função Lambda.

Por exemplo, ao depurar uma função Java 25, você deve ter o Java 25 instalado no ambiente local em que o AWS Toolkit está sendo executado. Se você tentar depurar uma função Java 25 com o Java 21 ou uma versão anterior instalada localmente, a depuração remota não será capaz de parar nos pontos de interrupção definidos.

Certifique-se de que sua versão local do Java corresponda à versão de tempo de execução da função Lambda antes de iniciar uma sessão de depuração.

### A cota de tunelamento seguro de IoT foi excedida
<a name="troubleshooting-tunnel-quota"></a>

Veja a seguir um exemplo do *erro de cota de túnel excedida* que ocorre quando você atinge o limite diário de conexões AWS IoT seguras de tunelamento na depuração remota Lambda.

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

AWS IoT A conexão de tunelamento seguro tem as seguintes cotas:
+ O tunelamento seguro de IoT de nível gratuito tem 10 conexões por dia.
+ Cada túnel oferece suporte a uma instância do VS Code por até 12 horas.
+ A cota se aplica por AWS conta, por dia.

Se você encontrar o erro de tunelamento AWS IoT seguro, aguarde a redefinição diária da cota ou entre em contato com o AWS suporte para solicitar um aumento do limite de cota. Para obter informações de contato de AWS suporte, consulte o [portal de contato de AWS suporte](https://aws.amazon.com/contact-us/). *Para obter informações detalhadas sobre tunelamento AWS IoT seguro, consulte o tópico sobre [tunelamento AWS IoT seguro](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html) no Guia do desenvolvedor.AWS IoT *