

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

# Usando o AWS SAMCLI with Terraform para depuração e teste locais
<a name="using-samcli-terraform"></a>

Este tópico aborda como usar AWS Serverless Application Model comandos compatíveis da interface de linha de comando (AWS SAMCLI) com seus Terraform projetos Terraform Cloud e.

Para fornecer feedback e enviar solicitações de atributos, crie um [Problema GitHub](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform).

**Topics**
+ [Teste local com sam local invoke](#using-samcli-terraform-local-invoke)
+ [Teste local com sam local start-api](#using-samcli-terraform-local-start-api)
+ [Teste local com sam local start-lambda](#using-samcli-terraform-local-start-lambda)
+ [Limitações de Terraform](#using-samcli-terraform-unsupported)

## Teste local com sam local invoke
<a name="using-samcli-terraform-local-invoke"></a>

**nota**  
Para usar a CLI do AWS SAM para testar localmente, você deve ter o Docker instalado e configurado. Para instruções, consulte [Instalando o Docker para usar com o AWS SAMCLI](install-docker.md).

Veja a seguir um exemplo de como testar sua função do Lambda no local ao transmitir um evento:

```
$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -
```

Para saber mais sobre como usar essa função, consulte [Introdução aos testes com sam local invoke](using-sam-cli-local-invoke.md).

## Teste local com sam local start-api
<a name="using-samcli-terraform-local-start-api"></a>

Para usar o `sam local start-api` com o Terraform, execute o seguinte:

```
$ sam local start-api --hook-name terraform
```

Este é um exemplo:

```
$ sam local start-api --hook-name terraform                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                          
Running Prepare Hook to prepare the current application                                                                                                                                                   
Executing prepare hook of hook "terraform"                                                                                                                                                                
Initializing Terraform application                                                                                                                                                                        
...
Creating terraform plan and getting JSON output                                                                                                                                                           
....
Generating metadata file                                                                                                                                                                                  
                                                                                                                                                                                                          
Unresolvable attributes discovered in project, run terraform apply to resolve them.                                                                                                                       
                                                                                                                                                                                                          
Finished generating metadata file. Storing in...
Prepare hook completed and metadata file generated at: ...    
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]                                                                                                                                          
Mounting None at http://127.0.0.1:3000/hello [POST]                                                                                                                                                       
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you  
used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template                     
2023-06-26 13:21:20  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Para saber mais sobre esse comando, consulte [Introdução aos testes com sam local start-api](using-sam-cli-local-start-api.md).

### Funções Lambda que usam autorizadores Lambda
<a name="using-sam-cli-terraform-local-start-api-authorizers"></a>

Para funções Lambda configuradas para usar autorizadores Lambda, elas invocarão AWS SAMCLI automaticamente seu autorizador Lambda antes de invocar seu endpoint de função do Lambda.
+ Para saber mais sobre esse recurso no AWS SAMCLI, consulte[Funções Lambda que usam autorizadores Lambda](using-sam-cli-local-start-api.md#using-sam-cli-local-start-api-authorizers).
+ Para obter mais informações sobre o uso de autorizadores Lambda em Terraform, consulte [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage) no *registro Terraform*.

## Teste local com sam local start-lambda
<a name="using-samcli-terraform-local-start-lambda"></a>

Veja a seguir um exemplo de como testar sua função Lambda localmente com o AWS Command Line Interface ()AWS CLI:

1. Use o AWS SAMCLI para criar um ambiente de teste local:

   ```
   $ sam local start-lambda --hook-name terraform hello_world_function
   ```

1. Use o AWS CLI para invocar sua função localmente:

   ```
   $ aws lambda invoke --function-name hello_world_function --endpoint-url http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json
   ```

Para saber mais sobre esse comando, consulte [Introdução aos testes com sam local start-lambda](using-sam-cli-local-start-lambda.md).

## Limitações de Terraform
<a name="using-samcli-terraform-unsupported"></a>

As limitações de uso de dados espaciais AWS SAM CLI com Terraform são as seguintes:
+ Funções Lambda vinculadas a várias camadas.
+ Variáveis locais Terraform que definem vínculos entre recursos.
+ Fazendo referência a uma função do Lambda que ainda não foi criada. Isso inclui funções definidas no atributo body do recurso da API REST.

Para evitar essas limitações, você pode executar `terraform apply` quando um novo recurso é adicionado.