AWS Lambda depuração remota - AWS Kit de ferramentas para VS Code

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

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 Lambda no. AWS Toolkit for Visual Studio Code

Como funciona a depuração remota Lambda

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 Secure Tunneling. AWS IoT Essa conexão permite que você use seus pontos de interrupção de código local para percorrer a função enquanto ela é executada remotamente. Depois que sua 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

Tempos de execução compatíveis

Os seguintes tempos de execução são compatíveis com a depuração remota Lambda.

  • Python (Amazon Linux 2023)

  • Java

  • JavaScript/Node.js (Amazon Linux 2023)

Pré-requisitos

Antes de começar, os seguintes pré-requisitos devem ser 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 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 Lambda, consulte o tópico Criar sua primeira função Lambda 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 tópico no Guia do AWS Lambdadesenvolvedor. Veja a seguir um exemplo de uma política que contém as permissões mínimas necessárias para trabalhar com a depuração remota Lambda no kit de ferramentas. AWS

    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:CloseTunnel", "iot:OpenTunnel", "iot:RotateTunnelAccessToken", "iot:ListTunnels" ], "Resource": "*" } ] }

Acessando a depuração remota do Lambda

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, você pode 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.

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

  3. No explorador, expanda o nó Lambda.

  4. Navegue até 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.

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

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

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

  5. 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.

Trabalhando com a depuração remota Lambda

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

nota

As funções Lambda têm um limite de 5 camadas e um limite 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.

Configurando uma sessão de depuração

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 AWS a partir do explorador ou o procedimento Acessando a depuração remota do Lambda a partir do explorador do Application Builder, localizado na seção anterior.

  2. 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.

  3. 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 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 Lambda. Isso abrirá o seu handler file no editor do VS Code.

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

Definindo pontos de interrupção e depuração

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

  1. handler fileNo editor 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.

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

  3. 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.

  4. 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.

Atualizando e testando sua função

Para modificar seu código e testar as 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 handler file na sua no editor do VS Code.

  2. Salve suas alterações (Command+S on macOS,Ctrl+S on Windows)

  3. 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.

  4. Continue depurando e testando suas alterações definindo 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.

Encerrando uma sessão de depuração

Cada uma das opções a seguir encerra sua sessão de depuração remota e remove a camada de depuração do seu projeto.

  • Escolher a opção Remover configuração de depuração na tela de configuração de invocação remota.

  • Escolher o ícone de desconexão nos controles de depuração do VS Code.

  • Fechando o handler file no editor do VS Code.

nota

Observe o seguinte:

  • A camada de depuração Lambda é 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 sua função a partir do controle de origem para garantir que ela corresponda ao seu código de produção.

Solução de problemas e casos de uso avançados

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.

  2. Atualize a visualização da Web fechando a visualização da Web da configuração de invocação remota e reabrindo-a.

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

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

  5. Se você não conseguir solucionar o problema, envie um problema para AWS Toolkit for Visual Studio Code GitHub Problemas.

Caso de uso avançado: configuração de assinatura de código

A depuração remota requer a anexação de uma camada de depuração à sua função 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.

  • Remova temporariamente a assinatura do código.

  • Use uma camada de depuração assinada.

Removendo temporariamente a assinatura de código

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

Para obter mais informações, consulte a UpdateCodeSigningConfigreferência na Referência AWS Lambda da API.

Usando uma camada de depuração assinada

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

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

  3. A partir do AWS CLI, use o comando a seguir para baixar a versão da camadaaws 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 na Referência de Comandos.AWS CLI

  4. 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 no Guia do AWS Serverless Application Model desenvolvedor.

  5. Depois que a camada for assinada e publicada em sua conta, retorne à seção de configuração adicional de depuração remota da 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 usa sua camada assinada em vez da camada padrão.

Regiões compatíveis

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 das regiões suportadas.

  • 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

As funções Lambda têm um limite de 5 camadas e um limite 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 sua 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 tópico no Guia do AWS Lambda desenvolvedor.

A lista a seguir descreve maneiras de solucionar e corrigir esse erro.

  • Reduza o tamanho da função: otimize seu código de função e remova dependências desnecessárias.

  • Remova as camadas não utilizadas: remova temporariamente as camadas não essenciais durante a depuração.

  • Use dependências externas: mova dependências grandes para armazenamento externo, como o Amazon S3, e carregue-as em tempo de execução.

A cota de tunelamento seguro de IoT foi excedida

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 suporta 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. Para obter informações detalhadas sobre tunelamento AWS IoT seguro, consulte o tópico sobre tunelamento AWS IoT seguro no Guia do desenvolvedor.AWS IoT

Depuração de funções do TypeScript Lambda com mapas de origem

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

Pré-requisitos

Para depurar suas funções do TypeScript Lambda, os seguintes pré-requisitos devem ser atendidos.

  • Você TypeScript deve estar em conformidade 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 na documentação do VS Code.

  • Para trabalhar com mapas de origem em linha, todas as alterações devem ser reimplantadas na nuvem.

Configuração

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.

  2. No explorador, expanda o nó Lambda.

  3. 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

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

  5. Configure seu caminho raiz local apontando para o diretório que contém seuTypeScript handler file.

    nota

    TypeScript handler fileÉ aqui que você define seus pontos de interrupção de depuração.

  6. Expanda as configurações adicionais de depuração remota.

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

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

    Se app.js e app.map estiverem dentro.aws-sam/build/HelloWorldFunction, defina a localização dos arquivos de saída/Users/user/project/aws-sam/build/HelloWorldFunction/*.

    nota

    O caminho do arquivo de saída deve ser um caminho absoluto.

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