

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

# Suporte AWS SAM CLI Terraform
<a name="terraform-support"></a>

Esta seção aborda o uso da interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) com seus Terraform projetos e a Terraform nuvem.

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**
+ [Conceitos básicos do suporte Terraform para AWS SAM CLI](gs-terraform-support.md)
+ [Usando o AWS SAMCLI with Terraform para depuração e teste locais](using-samcli-terraform.md)
+ [Usando o AWS SAMCLI with Serverless.tf para depuração e teste locais](using-samcli-serverlesstf.md)
+ [AWS SAM CLIcom Terraform referência](terraform-reference.md)
+ [Para que serve o suporte AWS SAMCLI para Terraform?](#what-is-terraform-support)

# Conceitos básicos do suporte Terraform para AWS SAM CLI
<a name="gs-terraform-support"></a>

Este tópico aborda como começar a usar a interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) comTerraform.

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**
+ [Pré-requisitos AWS SAM CLI Terraform](#gs-terraform-support-prerequisites)
+ [Usando comandos AWS SAMCLI com Terraform](#gs-terraform-support-using)
+ [Configurado para projetos Terraform](#gs-terraform-support-projects)
+ [Configurar para o Terraform Cloud](#gs-terraform-support-cloud)

## Pré-requisitos AWS SAM CLI Terraform
<a name="gs-terraform-support-prerequisites"></a>

Preencha todos os pré-requisitos para começar a usar o AWS SAMCLI com seus projetos Terraform.

1. 

**Instalar ou atualizar a AWS SAM CLI**

   Para verificar se você tem o AWS SAMCLI instalado, execute o seguinte:

   ```
   $ sam --version
   ```

   Se o AWS SAMCLI já estiver instalado, a saída exibirá uma versão. Para atualizar para a versão mais recente, consulte [Atualizar o AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

   Para obter instruções sobre como instalar o AWS SAMCLI junto com todos os seus pré-requisitos, consulte [Instale o AWS SAM CLI](install-sam-cli.md).

1. 

**Instalar o Terraform**

   Para verificar se você instalou o Terraform, execute o seguinte:

   ```
   $ terraform -version
   ```

   Para instalarTerraform, consulte [Instalar Terraform](https://developer.hashicorp.com/terraform/downloads) no *registro Terraform*.

1. 

**Instale Docker para testes locais**

   O AWS SAM CLI exige Docker para testes locais. Para instalar o Docker, consulte [Instalando o Docker para usar com o AWS SAMCLI](install-docker.md).

## Usando comandos AWS SAMCLI com Terraform
<a name="gs-terraform-support-using"></a>

Ao executar um comando AWS SAMCLI compatível, use a `--hook-name` opção e forneça o `terraform` valor. Este é um exemplo:

```
$ sam local invoke --hook-name terraform
```

Você pode configurar essa opção em seu arquivo AWS SAMCLI de configuração com o seguinte:

```
hook_name = "terraform"
```

## Configurado para projetos Terraform
<a name="gs-terraform-support-projects"></a>

Conclua as etapas deste tópico para usar o AWS SAMCLI com projetos Terraform .

Nenhuma configuração adicional é necessária se você criar seus AWS Lambda artefatos fora do Terraform projeto. Veja [Usando o AWS SAMCLI with Terraform para depuração e teste locais](using-samcli-terraform.md) para começar a usar AWS SAMCLI o.

Se você criar seus artefatos Lambda em seus projetos Terraform, deverá fazer o seguinte:

1. Instalar o Python 3.8 ou mais recente

1. Instale a ferramenta Make.

1. Defina sua lógica de construção de artefatos Lambda em seu projeto Terraform.

1. Defina um recurso `sam metadata` para informar sua lógica de construção AWS SAMCLI.

1. Use o AWS SAMCLI `sam build` comando para criar seus artefatos do Lambda.

### Instalar o Python 3.8 ou mais recente
<a name="gs-terraform-support-projects-python"></a>

Python3.8 ou mais recente é necessário para uso com o. AWS SAMCLI Quando você executa `sam build`, cria AWS SAMCLI que contêm comandos `makefiles` Python para criar seus artefatos do Lambda.

Para obter instruções de instalação, consulte [Descarregando Python](https://wiki.python.org/moin/BeginnersGuide/Download) no *Guida para iniciantes* do Python.

Verifique se o Python 3.8 ou mais recente foi adicionado ao caminho da sua máquina executando:

```
$ python --version
```

A saída deve exibir uma versão do Python que seja 3.8 ou mais recente.

### Instale a ferramenta Make
<a name="gs-terraform-support-projects-make"></a>

O GNU [Make](https://www.gnu.org/software/make/) é uma ferramenta que controla a geração de executáveis e outros arquivos não fonte para seu projeto. O AWS SAMCLI cria `makefiles` que dependem dessa ferramenta para criar seus artefatos Lambda.

Se você não tiver Make instalado em sua máquina local, instale-o antes de prosseguir.

Para Windows, você pode instalar usando o [Chocolatey](https://chocolatey.org/). Para obter instruções, consulte [Usando o Chocolatey](https://www.technewstoday.com/install-and-use-make-in-windows/#using-chocolatey) em *Como instalar e usar o “Make”* no Windows

### Defina a lógica de construção dos artefatos Lambda
<a name="gs-terraform-support-projects-logic"></a>

Use o tipo de recurso `null_resource` Terraform para definir sua lógica de criação do Lambda. Veja a seguir um exemplo que usa um script de construção personalizado para criar uma função do Lambda.

```
resource "null_resource" "build_lambda_function" {
    triggers = {
        build_number = "${timestamp()}" 
    }

    provisioner "local-exec" {
        command =  substr(pathexpand("~"), 0, 1) == "/"? "./py_build.sh \"${local.lambda_src_path}\" \"${local.building_path}\" \"${local.lambda_code_filename}\" Function" : "powershell.exe -File .\\PyBuild.ps1 ${local.lambda_src_path} ${local.building_path} ${local.lambda_code_filename} Function"
    }
}
```

### Defina o recurso sam metadata
<a name="gs-terraform-support-projects-metadata"></a>

O recurso `sam metadata` é um tipo de recurso `null_resource` Terraform que AWS SAMCLI fornece as informações necessárias para localizar seus artefatos do Lambda. É necessário um recurso `sam metadata` exclusivo para cada função ou camada do Lambda em seu projeto. Para saber mais sobre esse tipo de recurso, consulte [null\$1resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) no *registro Terraform*.

**Para definir um recurso sam metadata**

1. Nomeie seu recurso começando com `sam_metadata_` para identificá-lo como um recurso sam metadata.

1. Defina as propriedades do artefato Lambda dentro do bloco `triggers` do seu recurso.

1. Especifique o `null_resource` que contém sua lógica de construção do Lambda com o argumento `depends_on`.

   Veja um exemplo de modelo a seguir:

   ```
   resource "null_resource" "sam_metadata_..." {
     triggers = {
       resource_name = resource_name
       resource_type = resource_type
       original_source_code = original_source_code
       built_output_path = built_output_path
     }
     depends_on = [
       null_resource.build_lambda_function # ref to your build logic
     ]
   }
   ```

   O seguinte é um exemplo do recurso `sam metadata`:

   ```
   resource "null_resource" "sam_metadata_aws_lambda_function_publish_book_review" {
       triggers = {
           resource_name = "aws_lambda_function.publish_book_review"
           resource_type = "ZIP_LAMBDA_FUNCTION"
           original_source_code = "${local.lambda_src_path}"
           built_output_path = "${local.building_path}/${local.lambda_code_filename}"
       }
       depends_on = [
           null_resource.build_lambda_function
       ]
   }
   ```

O conteúdo do seu recurso `sam metadata` variará com base no tipo de recurso Lambda (função ou camada) e no tipo de embalagem (ZIP ou imagem). Para obter mais informações e exemplos, consulte [recurso de metadados do sam](terraform-sam-metadata.md).

Quando você configura um recurso `sam metadata` e usa um comando AWS SAMCLI compatível, o AWS SAMCLI gera o arquivo de metadados antes de executar o comando AWS SAMCLI. Depois de gerar esse arquivo, você pode usar a `--skip-prepare-infra` opção with future AWS SAMCLI commands para pular o processo de geração de metadados e economizar tempo. Essa opção só deve ser usada se você não tiver feito nenhuma alteração na infraestrutura, como criar novas funções do Lambda ou novos endpoints de API.

### Use o AWS SAMCLI para criar seus artefatos Lambda
<a name="gs-terraform-support-projects-build"></a>

Use o AWS SAMCLI `sam build` comando para criar seus artefatos do Lambda. Quando você executa `sam build`, o AWS SAM CLI faz o seguinte:

1. Procura recursos `sam metadata` em seu projeto Terraform para conhecer e localizar seus recursos do Lambda.

1. Inicia sua lógica de criação do Lambda para criar seus artefatos do Lambda.

1. Cria um `.aws-sam` diretório que organiza seu Terraform projeto para uso com os AWS SAMCLI `sam local` comandos.

**Para compilar com sam build**

1. No diretório que contém seu módulo raiz Terraform, execute o seguinte:

   ```
   $ sam build --hook-name terraform
   ```

1. Para criar uma função ou camada específica do Lambda, execute o seguinte

   ```
   $ sam build --hook-name terraform lambda-resource-id
   ```

   O ID do recurso Lambda pode ser o nome da função do Lambda ou o endereço completo do Terraform recurso, como `aws_lambda_function.list_books` ou `module.list_book_function.aws_lambda_function.this[0]`.

Se o código-fonte da função ou outros arquivos de configuração Terraform estiverem localizados fora do diretório que contém o módulo raiz Terraform, você precisará especificar o local. Use a opção `--terraform-project-root-path` para especificar o caminho absoluto ou relativo para o diretório de nível superior que contém esses arquivos. Este é um exemplo:

```
$ sam build --hook-name terraform --terraform-project-root-path ~/projects/terraform/demo
```

#### Crie usando um contêiner
<a name="gs-terraform-support-projects-build-container"></a>

Ao executar o AWS SAMCLI `sam build` comando, você pode configurar o AWS SAMCLI para criar seu aplicativo usando um Docker contêiner local.

**nota**  
Você deve ter a Docker instalada e configurada. Para instruções, consulte [Instalando o Docker para usar com o AWS SAMCLI](install-docker.md).

**Para construir usando um contêiner**

1. Crie um `Dockerfile` que contenha as ferramentas Terraform, Python e Make. Você também deve incluir o runtime da função do Lambda.

   O seguinte é um exemplo de `Dockerfile`:

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:2
   
   RUN yum -y update \
       && yum install -y unzip tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \
       less libcurl-devel openssl openssl-devel readline-devel xz-devel \
       zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \
       && rm -rf /var/cache/yum
   
   RUN yum -y install make \
       && yum -y install zip
   
   RUN yum install -y yum-utils \
       && yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo \
       && yum -y install terraform \
       && terraform --version
   
   # AWS Lambda Builders
   RUN amazon-linux-extras enable python3.8
   RUN yum clean metadata && yum -y install python3.8
   RUN curl -L get-pip.io | python3.8
   RUN pip3 install aws-lambda-builders
   RUN ln -s /usr/bin/python3.8 /usr/bin/python3
   RUN python3 --version
   
   VOLUME /project
   WORKDIR /project
   
   ENTRYPOINT ["sh"]
   ```

1. Use [https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/) para criar sua Docker imagem.

   Este é um exemplo:

   ```
   $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
   ```

1. Execute o AWS SAMCLI `sam build` comando com `--use-container` as `--build-image` opções e.

   Este é um exemplo:

   ```
   $ sam build --use-container --build-image terraform-build:v1
   ```

### Próximas etapas
<a name="gs-terraform-support-projects-next"></a>

Para começar a usar o AWS SAM CLI com seus projetos Terraform, consulte [Usando o AWS SAMCLI with Terraform para depuração e teste locais](using-samcli-terraform.md).

## Configurar para o Terraform Cloud
<a name="gs-terraform-support-cloud"></a>

É altamente recomendável que você use Terraform v1.6.0 ou mais recente. Se estiver usando uma versão mais antiga, deverá gerar um arquivo de plano Terraform no local. O arquivo do plano local AWS SAM CLI fornece as informações necessárias para realizar testes e depuração locais.

**Para gerar um arquivo de plano local**
**nota**  
Essas etapas não são necessárias para Terraform v1.6.0 ou são mais recentes. Para começar a usar o AWS SAM CLI comTerraform Cloud, consulte[Uso do AWS SAM CLI com a Terraform](using-samcli-terraform.md).

1. **Configure um token de API** – O tipo de token dependerá do seu nível de acesso. Para saber mais, consulte [Implantações](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens) na *documentação do Terraform Cloud*.

1. **Defina sua variável de ambiente de token de API** – Veja a seguir um exemplo da linha de comando:

   ```
   $ export TOKEN="<api-token-value>"
   ```

1. **Obtenha seu ID de execução** — No Terraform Cloud console, localize o ID de Terraform execução da execução que você gostaria de usar com AWS SAMCLI o.

   O ID da execução está localizado no caminho do rastro de navegação da sua execução.  
![\[Caminho do rastro em Terraform Cloud que exibe o ID de execução.\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/images/terraform-01.png)

1. **Busque o arquivo do plano** – Usando seu token de API, obtenha seu arquivo de plano local. Veja a seguir um exemplo da linha de comando:

   ```
   curl \
      --header "Authorization: Bearer $TOKEN" \
      --header "Content-Type: application/vnd.api+json" \
      --location \
      https://app.terraform.io/api/v2/runs/<run ID>/plan/json-output \
      > custom_plan.json
   ```

Agora você está pronto para usar o AWS SAM CLI com Terraform Cloud. Ao usar um comando AWS SAMCLI compatível, use a opção `--terraform-plan-file` para especificar o nome e o caminho do seu arquivo de plano local. Este é um exemplo:

```
$ sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
```

Veja a seguir um comando de exemplo que usa a `sam local start-api`:

```
$ sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
```

Para um aplicativo de amostra que você pode usar com esses exemplos, consulte [api\$1gateway\$1v2\$1tf\$1cloud](https://github.com/aws-samples/aws-sam-terraform-examples/tree/main/ga/api_gateway_v2_tf_cloud) no *repositório aws-samples GitHub*.

### Próximas etapas
<a name="gs-terraform-support-cloud-next"></a>

Para começar a usar o  AWS SAMCLI com Terraform Cloud, consulte [Usando o AWS SAMCLI with Terraform para depuração e teste locais](using-samcli-terraform.md).

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

# Usando o AWS SAMCLI with Serverless.tf para depuração e teste locais
<a name="using-samcli-serverlesstf"></a>

A interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) pode ser usada com módulos Serverless.tf para depuração local e teste de suas funções e camadas. AWS Lambda Os seguintes comandos AWS SAM CLI são compatíveis:
+ `sam build`
+ `sam local invoke`
+ `sam local start-api`
+ `sam local start-lambda`

**nota**  
A versão 4.6.0 e mais recente do Serverless.tf oferece suporte à integração AWS SAMCLI.

Para começar a usar o AWS SAMCLI com seus módulos Serverless.tf, atualize para a versão mais recente do Serverless.tf e o. AWS SAMCLI

A partir da **versão 6.0.0 do serverless.tf**, você deve definir o parâmetro como `create_sam_metadata` `true`. Isso gera os recursos de metadados que o AWS SAMCLI `sam build` comando exige.

Para saber mais sobre Serverless.tf, consulte o [terraform-aws-lambda-module](https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest).

# AWS SAM CLIcom Terraform referência
<a name="terraform-reference"></a>

Esta seção é a referência para usar a interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) Terraform para depuração e teste locais.

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

## AWS SAM referência de recursos suportados
<a name="terraform-reference-sam"></a>

A documentação de referência dos atributos AWS SAMCLI compatíveis com o uso Terraform pode ser encontrada aqui:
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Referência específica Terraform
<a name="terraform-reference-specific"></a>

A documentação de referência específica para uso AWS SAMCLI com Terraform pode ser encontrada aqui:
+ [recurso de metadados do sam](terraform-sam-metadata.md)

# recurso de metadados do sam
<a name="terraform-sam-metadata"></a>

Essa página contém informações de referência para o tipo de recurso **sam metadata resource** usado com projetos Terraform.
+ Para uma introdução ao uso da interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) comTerraform, consulte[Para que serve o suporte AWS SAMCLI para Terraform?](terraform-support.md#what-is-terraform-support).
+ Como usar o AWS SAM CLI com Terraform, consulte [Usando o AWS SAMCLI with Terraform para depuração e teste locais](using-samcli-terraform.md).

**Topics**
+ [Argumentos](#terraform-sam-metadata-arguments)
+ [Exemplos](#terraform-sam-metadata-examples)

## Argumentos
<a name="terraform-sam-metadata-arguments"></a>


****  

| Argumento | Description | 
| --- | --- | 
| built\$1output\$1path | O caminho para os artefatos construídos pela sua AWS Lambda função. | 
| docker\$1build\$1args | Cadeia decodificada do objeto JSON dos argumentos de construção do Docker. Esse argumento é opcional. | 
| docker\$1context | O caminho para o diretório que contém o contexto de criação da imagem do Docker. | 
| docker\$1file |  O caminho para o arquivo Docker. Esse caminho é relativo ao caminho `docker_context`. Esse argumento é opcional. O valor padrão é `Dockerfile`.  | 
| docker\$1tag | O valor da tag de imagem do Docker criada. Este valor é opcional. | 
| depends\$1on | O caminho para o recurso de construção para sua função ou camada do Lambda. Para saber mais, consulte [O **depends\$1on** argumento](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on) no registro Terraform. | 
| original\$1source\$1code |  O caminho até onde sua função do Lambda é definida. Esse valor pode ser uma string, uma matriz de strings ou um objeto JSON decodificado como uma string. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | O nome de função do Lambda. | 
| resource\$1type |  O formato do seu tipo de pacote de funções do Lambda. Os valores aceitos são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | O caminho para o código do recurso Lambda no objeto JSON. Defina essa propriedade quando original\$1source\$1code for um objeto JSON. | 

## Exemplos
<a name="terraform-sam-metadata-examples"></a>

### recurso de metadados do sam que faz referência a uma função do Lambda usando o tipo de pacote ZIP
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### recurso de metadados do sam que faz referência a uma função do Lambda usando o tipo de pacote de imagem
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### mesmo recurso de metadados referenciando uma camada Lambda
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```

## Para que serve o suporte AWS SAMCLI para Terraform?
<a name="what-is-terraform-support"></a>

Use a interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) com seus Terraform projetos ou Terraform Cloud para realizar a depuração e o teste locais de:
+ AWS Lambda funções e camadas.
+ Amazon API Gateway APIs.

Para obter uma introduçãoTerraform, consulte [O que éTerraform?](https://developer.hashicorp.com/terraform/intro) no *HashiCorpTerraform site*.

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

**nota**  
Como parte da etapa de análise da integração, AWS SAMCLI os comandos AWS SAMCLI do usuário dos processos geram arquivos e dados do projeto. A saída do comando deve permanecer inalterada. Porém, em determinados ambientes, o ambiente ou o executor pode injetar logs ou informações adicionais na saída.

**Topics**
+ [O que é o AWS SAMCLI?](#what-is-terraform-support-sam-cli)
+ [Como posso usar o AWS SAM CLI com Terraform?](#what-is-terraform-support-how)
+ [Próximas etapas](#what-is-terraform-support-next)

### O que é o AWS SAMCLI?
<a name="what-is-terraform-support-sam-cli"></a>

 AWS SAMCLIÉ uma ferramenta de linha de comando que você pode usar com AWS SAM modelos e integrações de terceiros compatíveis, como, por exemploTerraform, para criar e executar seus aplicativos sem servidor. Para obter uma introdução ao AWS SAMCLI, consulte[O que é o AWS SAMCLI?](what-is-sam-overview.md#what-is-sam-cli).

O AWS SAMCLI suporta os seguintes comandos paraTerraform:
+ `sam local invoke`— Inicie uma invocação única de um recurso de função localmente. AWS Lambda Para saber mais sobre esse comando, consulte [Introdução aos testes com sam local invoke](using-sam-cli-local-invoke.md).
+ `sam local start-api` – Execute seus recursos do Lambda localmente e teste por meio de um host de servidor HTTP local. Esse tipo de teste é útil para funções do Lambda invocadas por um endpoint do API Gateway. Para saber mais sobre esse comando, consulte [Introdução aos testes com sam local start-api](using-sam-cli-local-start-api.md).
+ `sam local start-lambda`— Inicie um endpoint local para sua função Lambda para invocá-la localmente AWS Command Line Interface usando AWS CLI() ou. SDKs Para saber mais sobre esse comando, consulte [Introdução aos testes com sam local start-lambda](using-sam-cli-local-start-lambda.md).

### Como posso usar o AWS SAM CLI com Terraform?
<a name="what-is-terraform-support-how"></a>

O [Terraformfluxo de trabalho principal](https://developer.hashicorp.com/terraform/intro/core-workflow) consiste em três estágios: **escrever**, **planejar** e **aplicar**. Com AWS SAMCLI suporte paraTerraform, você pode aproveitar o AWS SAMCLI `sam local` conjunto de comandos enquanto continua usando seus Terraform fluxos de trabalho para gerenciar seus aplicativos em AWS. Geralmente, isso significa o seguinte:
+ **Escreva** – Crie sua infraestrutura como código usandoTerraform.
+ **Teste e depure** – Use o AWS SAMCLI para testar e depurar seus aplicativos localmente.
+ **Planejar** – visualize as alterações antes de aplicar.
+ **Aplique** – provisione sua infraestrutura.

Para ver um exemplo de uso do AWS SAMCLI withTerraform, consulte [Better together: AWS SAMCLI and HashiCorp Terraform](https://aws.amazon.com/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform/) at the *AWS Compute Blog.*

### Próximas etapas
<a name="what-is-terraform-support-next"></a>

Para concluir todos os pré-requisitos e configurar Terraform, consulte [Conceitos básicos do suporte Terraform para AWS SAM CLI](gs-terraform-support.md).