Opções de configuração para depurar aplicações sem servidor - 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á.

Opções de configuração para depurar aplicações sem servidor

Ao abrir o arquivo launch.json para editar configurações de depuração, você pode usar o recurso IntelliSense do VS Code para ver e preencher automaticamente as propriedades válidas. Para acionar o IntelliSense no editor, pressione Ctrl + barra de espaço.

Use o IntelliSense do VS Code para localizar e preencher propriedades de depuração válidas.

O IntelliSense permite encontrar e definir propriedades para invocar funções do Lambda diretamente ou com o modelo do AWS SAM. Defina também propriedades para o "lambda" (como a função é executada), "sam" (como o a CLI do AWS SAM cria a aplicação) e "aws" (como as informações de conexão da AWS são fornecidas).

AWS SAM: invocação direta do manipulador do Lambda/invocação do Lambda baseada em modelo
Propriedade Descrição

type

Especifica qual extensão gerencia a configuração de inicialização. Sempre definido como aws-sam para usar a CLI do AWS SAM para criar e depurar localmente.

name

Especifica um nome compatível com o leitor a ser exibido na lista Debug launch configuration (Configuração de execução da depuração).

request

Especifica o tipo de configuração a ser executada pela extensão designada (aws-sam). Sempre definido como direct-invoke para iniciar a função do Lambda.

invokeTarget

Especifica o ponto de entrada para invocar o recurso.

Para invocar a função Lambda diretamente, defina valores para os seguintes campos de invokeTarget:

  • target: defina como code.

  • lambdaHandler – O nome do manipulador da função do Lambda a ser chamado..

  • projectRoot: o caminho para o arquivo da aplicação que contém o manipulador de função do Lambda.

  • architecture: arquitetura do processador do ambiente emulado no qual a aplicação SAM do Lambda local é executada. Para determinados runtimes, você pode escolher arm64 em vez da arquitetura x86_64 padrão. Para obter mais informações, consulte Criar uma aplicação sem servidor (local).

Para invocar os recursos do Lambda com o modelo do AWS SAM, defina valores para os seguintes campos invokeTarget:

  • target: defina como template.

  • templatePath: o caminho para o arquivo de modelo do AWS SAM.

  • logicalId – O nome do recurso da AWS::Lambda::Function ou AWS::Serverless::Function a ser chamado. Você pode encontrar o nome do recurso no modelo do AWS SAM formatado em YAML. Observe que o AWS Toolkit reconhece implicitamente funções definidas com PackageType: Image no modelo do AWS SAM como funções do Lambda baseadas em imagens. Para obter mais informações, consulte Pacotes de implantação do Lambda no Guia do desenvolvedor do AWS Lambda.

Propriedades do Lambda ("lambda")
Propriedade Descrição

environmentVariables

Transmite parâmetros operacionais para a função do Lambda. Por exemplo, se você estiver gravando em um bucket do Amazon S3, em vez de codificação rígida no nome do bucket em que estiver gravando, configure o nome do bucket como uma variável de ambiente.

nota

Ao especificar variáveis de ambiente para uma aplicação sem servidor, você deve adicionar configurações ao modelo do AWS SAM (template.yaml) e ao arquivo launch.json.

Exemplo de formatação para uma variável de ambiente no modelo do AWS SAM:

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.lambdaHandlerN10 Runtime: nodejs10.x Environment: Variables: SAMPLE1: Default Sample 1 Value

Exemplo de formatação para uma variável de ambiente no arquivo launch.json:

"environmentVariables": { "SAMPLE1": "My sample 1 value" }

payload

Fornece duas opções para a carga útil de eventos que você fornece para a função Lambda como entrada.

  • "json": Pares de chave/valor formatados em JSON que definem a carga útil do evento.

  • "path": Um caminho para o arquivo que é usado como a carga útil do evento.

memoryMB

Especifica megabytes (MB) de memória fornecidos para executar uma função do Lambda invocada.

runtime

O runtime usado pela função do Lambda. Para obter mais informações, consulte Tempos de execução do AWS Lambda.

timeoutSec

Define o tempo permitido, em segundos, antes que a sessão de depuração seja encerrada.

pathMappings

Especifica onde o código local está em relação ao local onde ele é executado no contêiner.

Por padrão, o kit de ferramentas para VS Code define localRoot como a raiz do código da função do Lambda no espaço de trabalho local e remoteRoot como /var/task, que é o diretório de trabalho padrão para código em execução no Lambda. Se o diretório de trabalho for alterado no Dockerfile ou com o parâmetro WorkingDirectory no arquivo de modelo do AWS CloudFormation, pelo menos uma entrada pathMapping deverá ser especificada para que o depurador possa mapear com êxito os pontos de interrupção definidos localmente para o código em execução no contêiner do Lambda.

Exemplo de formatação para pathMappings no arquivo launch.json:

"pathMappings": [ { "localRoot": "${workspaceFolder}/sam-app/HelloWorldFunction", "remoteRoot": "/var/task" } ]

Advertências:

  • Para funções do Lambda baseadas em imagem .NET, a entrada remoteRoot deve ser o diretório de compilação.

  • Para funções do Lambda baseadas em Node.js, você pode especificar somente uma única entrada de mapeamento de caminho.

O kit de ferramentas para VS Code usa a AWS SAM CLI para criar e depurar aplicações sem servidor localmente. Você pode configurar o comportamento dos comandos da CLI do AWS SAM usando propriedades da configuração do "sam" no arquivo launch.json.

Propriedades da AWS SAM CLI ("sam")
Propriedade Descrição Valor padrão

buildArguments

Configura como o sam build constrói o código-fonte do Lambda. Para visualizar opções de compilação, consulte sam build no Manual do desenvolvedor do AWS Serverless Application Model.

String vazia

containerBuild

Indica se a sua função deve ser construída dentro de um contêiner do Docker semelhante ao Lambda.

false

dockerNetwork

Especifica o nome ou ID de uma rede Docker existente à qual os contêineres do Docker do Lambda devem se conectar, juntamente com a rede de ponte padrão. Se não for especificado, os contêineres do Lambda se conectarão somente à rede Docker da ponte padrão.

String vazia

localArguments

Especifica argumentos adicionais de invocação local.

String vazia

skipNewImageCheck

Especifica se o comando deve ignorar a extração da imagem mais recente do Docker para o tempo de execução do Lambda.

false

template

Personaliza o modelo do AWS SAM usando parâmetros para inserir valores do cliente. Para obter mais informações, consulte Parâmetros no Guia do usuário do AWS CloudFormation.

"parameters":{}

Propriedades ("aws") da conexão da AWS
Propriedade Descrição Valor padrão

credentials

Seleciona um perfil específico (por exemplo, profile:default) do arquivo de credenciais para obter credenciais da AWS.

As credenciais da AWS fornecidas pelo arquivo de configuração compartilhado da AWS ou pelo arquivo de credenciais compartilhado da AWS ao kit de ferramentas do VS Code.

region

Define a região da AWS do serviço (por exemplo, us-east-1).

A região da AWS associada ao perfil de credenciais ativas.

Exemplo: configuração de inicialização de modelo

Veja um exemplo de arquivo de configuração de inicialização para um destino de modelo do AWS SAM:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:HelloWorldFunction", "invokeTarget": { "target": "template", "templatePath": "template.yaml", "logicalId": "HelloWorldFunction" }, "lambda": { "payload": {}, "environmentVariables": {} } } ] }

Exemplo: configuração de inicialização de código

Veja um exemplo de arquivo de configuração de inicialização para um destino de função do Lambda:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:app.lambda_handler (python3.7)", "invokeTarget": { "target": "code", "projectRoot": "hello_world", "lambdaHandler": "app.lambda_handler" }, "lambda": { "runtime": "python3.7", "payload": {}, "environmentVariables": {} } } ] }