

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

# AWS SAM CLI
<a name="using-sam-cli"></a>

AWS Serverless Application Model A interface de linha de comando (AWS SAMCLI) é uma ferramenta de linha de comando para desenvolvimento local e teste de aplicativos sem servidor. AWS SAMCLIIsso permite que você crie, transforme, implante, depure, empacote, inicialize e sincronize seus aplicativos sem servidor localmente antes de implantá-los na nuvem.

A CLI do AWS SAM funciona com aplicações com tecnologia sem servidor que são definidos usando diferentes estruturas e ferramentas de infraestrutura como código (IaC), com vários níveis de suporte:
+ **AWS SAM modelos** — fornece suporte nativo com o conjunto completo de recursos, incluindo recursos locais de teste, depuração, empacotamento e implantação.
+ **AWS Aplicativos CDK** — Suporta testes locais de funções Lambda depois de sintetizar AWS o aplicativo CDK em modelos usando o comando cdk CloudFormation synth.
+ **CloudFormation modelos** — Oferece compatibilidade direta porque AWS SAM se estende CloudFormation, oferecendo suporte a recursos sem servidor definidos em modelos padrão CloudFormation .
+ **Aplicações do Terraform**: fornece suporte limitado para criação e testes locais de funções do Lambda. Exige que você gere artefatos AWS SAM de modelo que representem suas funções Lambda definidas pelo Terraform.

Para obter o suporte de recursos mais abrangente e a experiência simplificada do desenvolvedor, recomendamos o uso de AWS SAM modelos nativos.

**Topics**
+ [Como os comandos AWS SAMCLI são documentados](#using-sam-cli-documentation)
+ [Configurando o AWS SAM CLI](using-sam-cli-configure.md)
+ [Comandos principais da CLI do AWS SAM](using-sam-cli-corecommands.md)
+ [Teste local com a CLI do AWS SAM](using-sam-cli-local-testing.md)

## Como os comandos AWS SAMCLI são documentados
<a name="using-sam-cli-documentation"></a>

Os comandos AWS SAMCLI são documentados usando o seguinte formato:
+ **Prompt** — O prompt Linux é documentado por padrão e exibida como (`$ `). Para comandos específicos do Windows, o (`> `) é usado como prompt. Não inclua prompt quando você digitar comandos.
+ **Diretório**: quando comandos devem ser executados de um diretório específico, o nome do diretório é mostrado antes do símbolo do prompt.
+ **Entrada do usuário** o texto do comando inserido na linha de comando é formatado como **user input**.
+ **Texto substituível** — O texto variável, como nomes de arquivos e parâmetros, é formatado como. *replaceable text* Em comandos ou comandos de várias linhas, em que é necessária uma entrada específica do teclado, a entrada do teclado também pode ser exibida como texto substituível. Por exemplo, .*ENTER*
+ **Saída** — A saída retornada como resposta ao comando é formatada como `computer output`.

O comando `sam deploy` e a saída a seguir são um exemplo:

```
$ sam deploy --guided --template template.yaml

Configuring SAM deploy
======================

    Looking for config file [samconfig.toml] :  Found
    Reading default arguments  :  Success

    Setting default arguments for 'sam deploy'
    =========================================
    Stack Name [sam-app]: ENTER
    AWS Region [us-west-2]: ENTER
    #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
    Confirm changes before deploy [y/N]: ENTER
    #SAM needs permission to be able to create roles to connect to the resources in your template
    Allow SAM CLI IAM role creation [Y/n]: ENTER
    #Preserves the state of previously provisioned resources when an operation fails
    Disable rollback [y/N]: ENTER
    HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
    Save arguments to configuration file [Y/n]: ENTER
    SAM configuration file [samconfig.toml]: ENTER
    SAM configuration environment [default]: ENTER
```

1. `sam deploy --guided --template template.yaml` é o comando que você insere na linha de comando.

1. **sam deploy --guided --template** deve ser fornecido como está.

1. *template.yaml*pode ser substituído pelo nome de seu arquivo específico.

1. A saída começa em `Configuring SAM deploy`.

1. Na saída, *y* indique *ENTER* os valores substituíveis que você fornece.

# Configurando o AWS SAM CLI
<a name="using-sam-cli-configure"></a>

Um dos benefícios AWS SAM é que ele otimiza o tempo do desenvolvedor removendo tarefas repetitivas. AWS SAMCLIinclui um arquivo de configuração nomeado `samconfig` para essa finalidade. Por padrão, nenhuma configuração para o AWS SAMCLI é necessária, mas você pode atualizar seu arquivo de configuração para permitir que você execute comandos com menos parâmetros, permitindo, em vez disso, AWS SAM referenciar seus parâmetros personalizados em seu arquivo de configuração. Os exemplos na tabela a seguir mostram como você pode otimizar os comandos:


| Original | Otimizado com `samconfig` | 
| --- | --- | 
| **sam build --cached --parallel --use-containers** | **sam build** | 
| **sam local invoke --env-vars locals.json** | **sam local invoke** | 
| **sam local start-api --env-vars locals.json --warm-containers EAGER** | **sam local start-api** | 

A CLI do AWS SAM fornece um conjunto de comandos para ajudar os desenvolvedores a criar, desenvolver e implantar aplicações sem servidor. Cada um desses comandos é configurável com sinalizadores opcionais com base nas preferências da aplicação e do desenvolvedor. Para obter mais informações, consulte o [AWS SAMCLIconteúdo em GitHub](https://github.com/aws/aws-sam-cli)

Os tópicos desta seção mostram como criar [Arquivo de configuração do AWS SAM CLI](serverless-sam-cli-config.md) e personalizar suas configurações padrão para otimizar o tempo de desenvolvimento da aplicação sem servidor.

**Topics**
+ [Como criar o arquivo de configuração (o arquivo `samconfig`)](#using-sam-cli-configure-create)
+ [Definir configurações do projeto](#using-sam-cli-configure-project)
+ [Configurar credenciais e configurações básicas](#using-sam-cli-configure-basic)

## Como criar o arquivo de configuração (o arquivo `samconfig`)
<a name="using-sam-cli-configure-create"></a>

O arquivo AWS SAMCLI de configuração (nome do arquivo`samconfig`) é um arquivo de texto que normalmente usa a estrutura TOML, mas também pode estar em YAML. Ao usar um modelo de início AWS rápido, esse arquivo é criado quando você executa o **sam init** comando. Você pode atualizar esse arquivo ao implantar uma aplicação usando o comando **sam deploy -\$1-guided**.

Depois que a implantação estiver concluída, o arquivo `samconfig` conterá um perfil denominado `default` se você tiver usado os valores padrão. Quando você executa novamente o **deploy** comando, AWS SAM aplica as configurações armazenadas desse perfil.

A vantagem do `samconfig` arquivo é que AWS SAM armazena as configurações de qualquer outro comando disponível além do comando deploy. Além desses valores criados em uma nova implantação, há vários atributos que você pode definir no `samconfig` arquivo que podem simplificar outros aspectos do fluxo de trabalho do desenvolvedor AWS SAMCLI.

## Definir configurações do projeto
<a name="using-sam-cli-configure-project"></a>

Você pode especificar configurações específicas do projeto, como valores de parâmetros de AWS SAMCLI comando, em um arquivo de configuração para usar com o. AWS SAMCLI Para obter mais informações sobre este arquivo de configuração, consulte [Arquivo de configuração do AWS SAM CLI](serverless-sam-cli-config.md).

### Usando arquivos de configuração
<a name="using-sam-cli-configure-project-using"></a>

Os arquivos de configuração são estruturados por ambiente, comando e valor de parâmetro. Para obter mais informações, consulte [Noções básicas de arquivos de configuração](serverless-sam-cli-config.md#serverless-sam-cli-config-basics).

**Para configurar um novo ambiente**

1. Especifique seu novo ambiente em seu arquivo de configuração.

   Veja a seguir um exemplo de especificação de um novo ambiente `prod`:

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   ```

------
#### [ YAML ]

   ```
   prod:
     global:
       parameters:
   ```

------

1. Especifique os valores dos parâmetros como pares de valores-chave na seção de parâmetros do arquivo de configuração.

   Veja a seguir um exemplo de como especificar o nome da pilha do seu aplicativo para o ambiente `prod`.

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   stack_name = "prod-app"
   ```

------
#### [ YAML ]

   ```
   prod:
     global:
       parameters:
         stack_name: prod-app
   ```

------

1. Use a opção `--config-env` para especificar o ambiente a ser usado.

   Veja um exemplo a seguir:

   ```
   $ sam deploy --config-env "prod"
   ```

**Para configurar valores de parâmetros**

1. Especifique o comando AWS SAMCLI para o qual você gostaria de configurar os valores dos parâmetros. Para configurar valores de parâmetros para todos os comandos AWS SAMCLI, use o identificador `global`.

   Veja a seguir um exemplo de especificação de valores de parâmetros para o `default` comando do ambiente `sam deploy`:

------
#### [ TOML ]

   ```
   [default.deploy.parameters]
   confirm_changeset = true
   ```

------
#### [ YAML ]

   ```
   default:
     deploy:
       parameters:
         confirm_changeset: true
   ```

------

   Veja a seguir um exemplo de especificação de valores de parâmetros para todos os AWS SAMCLI comandos no `default` ambiente:

------
#### [ TOML ]

   ```
   [default.global.parameters]
   stack_name = "sam-app"
   ```

------
#### [ YAML ]

   ```
   default:
     global:
       parameters:
         stack_name: sam-app
   ```

------

1. Você também pode especificar valores de parâmetros e modificar seu arquivo de configuração por meio do fluxo interativo AWS SAMCLI.

   A seguir está um exemplo do fluxo interativo `sam deploy --guided`:

   ```
   $ sam deploy --guided
   
   Configuring SAM deploy
   ======================
   
       Looking for config file [samconfig.toml] :  Found
       Reading default arguments  :  Success
   
       Setting default arguments for 'sam deploy'
       =========================================
       Stack Name [sam-app]: ENTER
       AWS Region [us-west-2]: ENTER
       #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
       Confirm changes before deploy [Y/n]: n
       #SAM needs permission to be able to create roles to connect to the resources in your template
       Allow SAM CLI IAM role creation [Y/n]: ENTER
       #Preserves the state of previously provisioned resources when an operation fails
       Disable rollback [y/N]: ENTER
       HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
       Save arguments to configuration file [Y/n]: ENTER
       SAM configuration file [samconfig.toml]: ENTER
       SAM configuration environment [default]: ENTER
   ```

Para obter mais informações, consulte [Criando e modificando arquivos de configuração](serverless-sam-cli-config.md#serverless-sam-cli-config-using).

### Exemplos
<a name="using-sam-cli-configure-project-examples"></a>

#### Exemplo básico de TOML
<a name="using-sam-cli-configure-project-examples-toml"></a>

Este é um exemplo de um arquivo de configuração da `samconfig.toml`:

```
...
version = 0.1

[default]
[default.global]
[default.global.parameters]
stack_name = "sam-app"

[default.build.parameters]
cached = true
parallel = true

[default.deploy.parameters]
capabilities = "CAPABILITY_IAM"
confirm_changeset = true
resolve_s3 = true

[default.sync.parameters]
watch = true

[default.local_start_api.parameters]
warm_containers = "EAGER"

[prod]
[prod.sync]
[prod.sync.parameters]
watch = false
```

#### Exemplo básico de YAML
<a name="using-sam-cli-configure-project-examples-yaml"></a>

Este é um exemplo de um arquivo de configuração da `samconfig.yaml`:

```
version 0.1
default:
  global:
    parameters:
      stack_name: sam-app
  build:
    parameters:
      cached: true
      parallel: true
  deploy:
    parameters:
      capabilities: CAPABILITY_IAM
      confirm_changeset: true
      resolve_s3: true
  sync:
    parameters:
      watch: true
  local_start_api:
    parameters:
      warm_containers: EAGER
prod:
  sync:
    parameters:
      watch: false
```

## Configurar credenciais e configurações básicas
<a name="using-sam-cli-configure-basic"></a>

Use o AWS Command Line Interface (AWS CLI) para definir configurações básicas, como AWS credenciais, nome da região padrão e formato de saída padrão. Depois de configurado, você pode usar essas configurações com o AWS SAMCLI. Para saber mais, consulte o seguinte no *AWS Command Line Interface Guia de usuário*:
+ [Noções básicas de configuração](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [Configurações do arquivo de configuração e credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ [Perfis nomeados para o AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+ [Usando um perfil nomeado habilitado para o IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/sso-using-profile.html)

Para obter instruções de configuração rápida, consulte [Etapa 5: use o AWS CLI para configurar as AWS credenciais](prerequisites.md#prerequisites-configure-credentials).

# Comandos principais da CLI do AWS SAM
<a name="using-sam-cli-corecommands"></a>

A CLI do AWS SAM tem alguns comandos básicos que você usa para criar, compilar, testar, implantar e sincronizar aplicações sem servidor. A tabela abaixo lista esses comandos e fornece links com mais informações para cada um.

Para obter uma lista completa de comandos da CLI do AWS SAM, consulte [AWS SAMCLIReferência de comando](serverless-sam-cli-command-reference.md).


| Command | O que ela faz | Tópicos relacionados | 
| --- | --- | --- | 
| **sam build** | Prepara um aplicativo para as etapas subsequentes do fluxo de trabalho do desenvolvedor, como testes locais ou implantação na AWS nuvem. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam deploy** | Implanta um aplicativo na AWS nuvem usando CloudFormation. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam init** | Fornece opções para inicializar e criar uma aplicação sem servidor. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam local** | Fornece subcomandos para testar as aplicações sem servidor localmente. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote invoke** | Fornece uma forma de interagir com AWS os recursos suportados na AWS nuvem. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote test-event** | Fornece uma maneira de acessar e gerenciar eventos de teste compartilháveis para suas funções do AWS Lambda. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam sync** | Fornece opções para sincronizar rapidamente as alterações do aplicativo local com a AWS nuvem. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 

# Teste local com a CLI do AWS SAM
<a name="using-sam-cli-local-testing"></a>

A CLI do AWS SAM permite que você teste aplicações com tecnologia sem servidor localmente em diferentes ferramentas de infraestrutura como código (IaC). Este guia explica como usar a CLI do AWS SAM para testes locais com várias estruturas de IaC.

Os principais benefícios do uso da CLI do AWS SAM para testes locais incluem:
+ **Desenvolvimento rápido** - Teste as alterações no código sem precisar implantá-las AWS
+ **Eficiência de custos** - Desenvolva e teste sem incorrer AWS em custos
+ **Capacidade off-line**: trabalhe em suas aplicações sem uma conexão com a Internet
+ **Depuração simplificada**: percorra o código da função do Lambda localmente usando um depurador
+ **Teste realista** - Teste seus aplicativos usando emulação local de serviços AWS 

## Teste AWS SAM aplicativos localmente
<a name="using-sam-cli-local-testing-sam"></a>

Para obter informações sobre como testar aplicativos definidos usando AWS SAM modelos, consulte [Teste e depuração de aplicativos sem servidor neste guia](serverless-test-and-debug.md).

## CloudFormation Modelos de teste localmente
<a name="using-sam-cli-local-testing-cfn"></a>

Para usar os recursos AWS SAMCLI de teste locais do CloudFormation, adicione a AWS SAM transformação ao seu CloudFormation modelo. Para obter mais informações, consulte [Anatomia do modelo AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html) para:
+ Adicionando AWS SAM transformação aos CloudFormation modelos
+ Noções básicas sobre compatibilidade de modelos
+ Explorar a sintaxe de recursos com tecnologia sem servidor

## Teste aplicativos AWS CDK localmente
<a name="using-sam-cli-local-testing-cdk"></a>

Você pode usar o AWS SAMCLI para testar aplicativos AWS CDK localmente depois de sintetizar o aplicativo AWS CDK em CloudFormation modelos usando o comando cdk synth.

Para obter mais informações, consulte [Teste e crie aplicativos AWS CDK localmente com o guia do AWS SAMCLI](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html) desenvolvedor do AWS CDK. Isso inclui:
+ [Conceitos básicos sobre testes locais](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-getting-started)
+ [Teste local de aplicativos AWS CDK com AWS SAM](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-sam)

## Teste os aplicativos do Terraform localmente
<a name="using-sam-cli-local-testing-terraform"></a>

A CLI do AWS SAM oferece suporte a projetos do Terraform e do Terraform Cloud. Você pode usá-lo para realizar depuração e testes locais de: funções e camadas do Lambda e do Amazon API Gateway HTTP e REST. APIs

Para configurar seu ambiente e conhecer todos os recursos disponíveis, consulte o [Suporte do Terraform](terraform-support.md) neste guia. Isso inclui:
+ [Conceitos básicos do suporte do Terraform para a CLI do AWS SAM](gs-terraform-support.md)
+ [Usar a CLI do AWS SAM with Terraform para depuração e teste locais](using-samcli-terraform.md)