

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 name="serverless-sam-cli-using-invoke"></a>

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](sam-cli-command-reference-sam-local-invoke.md) 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](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event) 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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html) 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) [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html). 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
<a name="serverless-sam-cli-using-invoke-environment-file"></a>

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.

1. 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
<a name="serverless-sam-cli-using-invoke-environment-file-declaring"></a>

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`

1. `function_id`

1. `function_name`

1. 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
<a name="serverless-sam-cli-using-invoke-environment-file-dotenv"></a>

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
<a name="serverless-sam-cli-using-invoke-environment-file-override"></a>

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
<a name="serverless-sam-cli-using-invoke-layers"></a>

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](serverless-sam-cli-layers.md).

## Saiba mais
<a name="serverless-sam-cli-using-invoke-learn"></a>

Para obter um exemplo prático de invocar funções localmente, consulte o [Módulo 2 - Executar localmente](https://s12d.com/sam-ws-en-local) no *The* Complete Workshop. AWS SAM 