

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

# Arquivo de configuração do AWS SAM CLI
<a name="serverless-sam-cli-config"></a>

A interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) oferece suporte a um arquivo de configuração em nível de projeto que você pode usar para configurar valores de parâmetros de AWS SAMCLI comando.

Para obter a documentação sobre como criar e usar arquivos de configuração, consulte [Configurando o AWS SAM CLI](using-sam-cli-configure.md).

**Topics**
+ [

## Configurações padrão do arquivo de configuração
](#serverless-sam-cli-config-default)
+ [

## Formatos de arquivo de configuração suportados
](#serverless-sam-cli-config-formats)
+ [

## Especificar um arquivo de configuração
](#serverless-sam-cli-config-specify)
+ [

## Noções básicas de arquivos de configuração
](#serverless-sam-cli-config-basics)
+ [

## Regras de valores de parâmetros
](#serverless-sam-cli-config-rules)
+ [

## Precedência de configuração
](#serverless-sam-cli-config-precedence)
+ [

## Criando e modificando arquivos de configuração
](#serverless-sam-cli-config-using)

## Configurações padrão do arquivo de configuração
<a name="serverless-sam-cli-config-default"></a>

AWS SAM usa as seguintes configurações padrão do arquivo de configuração:
+ **Name**: `samconfig`.
+ **Localização** - Na raiz do seu projeto. Este é o mesmo local do seu arquivo `template.yaml`.
+ **Formato** – `TOML`. Para saber mais, consulte [TOML](https://toml.io/en/) na *documentação do TOML*.

Veja a seguir um exemplo de estrutura de projeto que inclui o nome e o local do arquivo de configuração padrão:

```
sam-app
├── README.md
├── __init__.py
├── events
├── hello_world
├── samconfig.toml
├── template.yaml
└── tests
```

O seguinte é um arquivo `samconfig.toml` de exemplo:

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

## Formatos de arquivo de configuração suportados
<a name="serverless-sam-cli-config-formats"></a>

Os formatos `TOML` e `[YAML|YML]` são suportados. Veja a seguinte sintaxe básica:

### TOML
<a name="serverless-sam-cli-config-formats-toml"></a>

```
version = 0.1
[environment]
[environment.command]
[environment.command.parameters]
option = parameter value
```

### YAML
<a name="serverless-sam-cli-config-formats-yaml"></a>

```
version: 0.1
environment:
  command:
    parameters:
      option: parameter value
```

## Especificar um arquivo de configuração
<a name="serverless-sam-cli-config-specify"></a>

Por padrão, o AWS SAMCLI procura um arquivo de configuração na seguinte ordem:

1. **Arquivo de configuração personalizado** — Se você usar a opção `--config-file` para especificar o nome e o local do arquivo, o AWS SAMCLI primeiro procurará esse arquivo.

1. **`samconfig.toml`Arquivo padrão** - Esse é o nome e o formato do arquivo de configuração padrão, localizado na raiz do seu projeto. Se você não especificar um arquivo de configuração personalizado, e AWS SAMCLI procurará esse arquivo em seguida.

1. **`samconfig.[yaml|yml]`arquivo** — Se o `samconfig.toml` não existir na raiz do seu projeto, AWS SAMCLI procurará esse arquivo.

Veja a seguir um exemplo de especificação de arquivo de configuração personalizado usando a opção `--config-file`:

```
$ sam deploy --config-file myconfig.yaml
```

**nota**  
O `--config-file` parâmetro deve ser relativo à localização do arquivo de AWS SAM modelo, pois é AWS SAMCLI necessário determinar o contexto no qual a configuração é aplicada. O `samconfig.toml` arquivo gerencia as configurações da sua versão do AWS SAMCLI, e a CLI procura o `samconfig.toml` arquivo (ou o parâmetro do arquivo de configuração substituído) na pasta relativa do arquivo. `template.yaml`

## Noções básicas de arquivos de configuração
<a name="serverless-sam-cli-config-basics"></a>

### Environment
<a name="serverless-sam-cli-config-basics-environment"></a>

Um **ambiente** é um identificador nomeado que contém um conjunto exclusivo de configurações. Você pode ter vários ambientes em um único AWS SAM aplicativo.

O nome do ambiente padrão é `default`.

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

### Command
<a name="serverless-sam-cli-config-basics-command"></a>

O **comando** é o comando AWS SAMCLI para o qual especificar valores de parâmetros.

Para especificar valores de parâmetros para todos os comandos, use o identificador `global`.

Ao referenciar um comando AWS SAM CLI, substitua espaços (` `) e hífens () por sublinhados (`–`). `_` Veja os exemplos a seguir:
+ `build`
+ `local_invoke`
+ `local_start_api`

### Parâmetros
<a name="serverless-sam-cli-config-basics-parameters"></a>

Os **parâmetros** são especificados como pares de chave-valor.
+ A **chave** é o nome da opção do comando AWS SAM CLI.
+ O **valor** é o valor a ser especificado.

Ao especificar chaves, use o nome da opção de comando de formato longo e substitua hífens (`–`) por sublinhados (`_`). Veja os exemplos a seguir:
+ `region`
+ `stack_name`
+ `template_file`

## Regras de valores de parâmetros
<a name="serverless-sam-cli-config-rules"></a>

### TOML
<a name="serverless-sam-cli-config-rules-toml"></a>
+ Os valores booleanos podem ser `true` ou `false`. Por exemplo, .`confirm_changeset = true`
+ Para valores de string, use aspas (`""`). Por exemplo, .`region = "us-west-2"`
+ Para valores de lista, use aspas (`""`) e separe cada valor usando um espaço (` `). Por exemplo: `capabilities = "CAPABILITY_IAM CAPABILITY_NAMED_IAM"`.
+ Para valores que contêm uma lista de pares de valores-chave, os pares são delimitados por espaço (` `) e o valor de cada par é cercado por aspas codificadas (`\" \"`). Por exemplo, .`tags = "project=\"my-application\" stage=\"production\""`
+ Para valores de parâmetros que podem ser especificados várias vezes, o valor é uma matriz de argumentos. Por exemplo: `image_repositories = ["my-function-1=image-repo-1", "my-function-2=image-repo-2"]`.

### YAML
<a name="serverless-sam-cli-config-rules-yaml"></a>
+ Os valores booleanos podem ser `true` ou `false`. Por exemplo, .`confirm_changeset: true`
+ Para entradas que contêm um único valor de string, as aspas (`""`) são opcionais. Por exemplo, .`region: us-west-2` Isso inclui entradas que contêm vários pares de valores-chave fornecidos como uma única sequência de caracteres. Este é um exemplo:

  ```
  $ sam deploy --tags "foo=bar hello=world"
  ```

  ```
  default:
    deploy:
      parameters:
        tags: foo=bar hello=world
  ```
+ Para entradas que contêm uma lista de valores ou entradas que podem ser usadas várias vezes em um único comando, especifique-as como uma lista de cadeias de caracteres.

  Este é um exemplo:

  ```
  $ sam remote invoke --parameter "InvocationType=Event" --parameter "LogType=None"
  ```

  ```
  default:
    remote_invoke:
      parameters:
          parameter:
          - InvocationType=Event
          - LogType=None
  ```

## Precedência de configuração
<a name="serverless-sam-cli-config-precedence"></a>

Ao configurar valores, a seguinte precedência ocorre:
+ Os valores dos parâmetros que você fornece na linha de comando têm precedência sobre os valores correspondentes no arquivo de configuração e na seção `Parameters` do arquivo de modelo.
+ Se a opção `--parameter-overrides` for usada na linha de comando ou em seu arquivo de configuração com a chave `parameter_overrides`, seus valores terão precedência sobre os valores na seção `Parameters` do arquivo de modelo.
+ Em seu arquivo de configuração, as entradas fornecidas para um comando específico têm precedência sobre as entradas globais. No exemplo a seguir, o comando `sam deploy` usará o nome da pilha `my-app-stack`.

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

  ```
  [default.global.parameters]
  stack_name = "common-stack"
  
  [default.deploy.parameters]
  stack_name = "my-app-stack"
  ```

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

  ```
  default:
    global:
      parameters:
        stack_name: common-stack
    deploy:
      parameters:
        stack_name: my-app-stack
  ```

------

## Criando e modificando arquivos de configuração
<a name="serverless-sam-cli-config-using"></a>

### Criação de arquivos de configuração
<a name="serverless-sam-cli-config-using-create"></a>

Quando você cria um aplicativo usando `sam init`, um arquivo `samconfig.toml` padrão é criado. Você também pode criar manualmente seu arquivo de configuração.

### Modificar arquivos de configuração
<a name="serverless-sam-cli-config-using-modify"></a>

Você pode modificar manualmente seus arquivos de configuração. Além disso, durante qualquer fluxo interativoCLI do AWS SAM, os valores configurados serão exibidos entre colchetes (`[ ]`). Se você modificar esses valores, AWS SAMCLI atualizará seu arquivo de configuração.

Veja a seguir um exemplo de fluxo interativo usando o comando `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
```

Ao modificar seu arquivo de configuração, AWS SAM  CLI manipula os valores globais da seguinte forma:
+ Se o valor do parâmetro existir na seção `global` do seu arquivo de configuração, AWS SAMCLI não grava o valor na seção de comando específica.
+ Se o valor do parâmetro existir nas seções de comando específicas `global` e nas seções de comando específicas, AWS SAMCLI excluirá a entrada específica em favor do valor global.