View a markdown version of this page

Invoque localmente as funções do Lambda com AWS SAM - AWS Serverless Application Model

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

Invoque localmente as funções do Lambda com AWS SAM

A invocação de uma função do Lambda localmente antes de testes ou implantações na nuvem pode ter vários benefícios. Isso permite que você teste a lógica da função mais rapidamente. Testar primeiro localmente reduz a probabilidade da identificação de problemas ao testar na nuvem ou durante a implantação, o que pode ajudar a evitar custos desnecessários. Além disso, os testes locais facilitam a depuração.

Você pode invocar a função do Lambda localmente usando o comando sam local invoke e fornecendo o ID lógico da função e um arquivo de eventos. sam local invoke também aceita stdin como evento. Para obter mais informações eventos, consulte Eventos no Guia do desenvolvedor do AWS Lambda . Para obter informações sobre formatos de mensagens de eventos de diferentes AWS serviços, consulte Usando AWS Lambda com outros serviços no Guia do AWS Lambda desenvolvedor.

nota

Não é recomendável usar os recursos de invocação local do SAM CLI em código não confiável. Para ter um isolamento completo do seu ambiente local, execute o código diretamente no serviço Lambda.

nota

O sam local invoke comando corresponde ao comando AWS Command Line Interface (AWS CLI) aws lambda invoke. Você pode usar qualquer um dos comandos para invocar uma função do Lambda.

Você deve executar o comando sam local invoke no diretório do projeto que contém a função que seja invocar.

Exemplos:

# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help

Arquivo de variável de ambiente

Para declarar localmente variáveis de ambiente que substituem os valores definidos em seus modelos, faça o seguinte:

  1. Crie um JSON ou .env arquivo que contenha as variáveis de ambiente a serem substituídas.

  2. Use o argumento --env-vars para substituir os valores definidos em seus modelos.

A --env-vars opção oferece suporte a dois formatos de arquivo. O formato do arquivo é detectado automaticamente com base no conteúdo do arquivo.

Declarando variáveis de ambiente com JSON

Para declarar variáveis de ambiente que se aplicam globalmente a todos os recursos, especifique um objeto Parameters como o seguinte:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }

Para declarar variáveis de ambiente diferentes para cada recurso, especifique objetos para cada recurso da seguinte forma:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

Ao especificar objetos para cada recurso, você pode usar os seguintes identificadores, listados na ordem da maior para a menor precedência:

  1. logical_id

  2. function_id

  3. function_name

  4. Identificador de caminho completo

Você pode usar os dois métodos anteriores para declarar variáveis de ambiente juntos em um único arquivo. Ao fazer isso, as variáveis de ambiente que você forneceu para recursos específicos têm precedência sobre as variáveis de ambiente globais.

Salve suas variáveis de ambiente em um arquivo JSON, como env.json.

Declarando variáveis de ambiente com arquivos.env

Você também pode usar um .env arquivo para declarar variáveis de ambiente. As variáveis declaradas em um .env arquivo se aplicam globalmente a todas as funções, equivalentes ao Parameters objeto no formato JSON.

TABLE_NAME=localtable BUCKET_NAME=amzn-s3-demo-bucket STAGE=dev

O .env formato suporta comentários (linhas começando com#) e valores entre aspas.

nota

O .env formato só oferece suporte a variáveis de ambiente globais. Para declarar variáveis de ambiente específicas da função, use o formato JSON.

Substituindo valores de variáveis de ambiente

Para substituir as variáveis de ambiente pelas definidas em seu arquivo de variáveis de ambiente, use o --env-vars argumento com os start-api comandos invoke ou. Por exemplo:

# Using a JSON file sam local invoke --env-vars env.json # Using a .env file sam local invoke --env-vars .env

Layers

Se seu aplicativo incluir camadas, para obter informações sobre como depurar problemas com camadas em seu host local, consulte Aumente a eficiência usando camadas Lambda com AWS SAM.

Saiba mais

Para obter um exemplo prático de invocar funções localmente, consulte o Módulo 2 - Executar localmente no The Complete Workshop. AWS SAM