

# Carregar um parâmetro de um arquivo na AWS CLI
<a name="cli-usage-parameters-file"></a>

Alguns parâmetros esperam nomes de arquivos como argumentos, dos quais a AWS CLI carrega os dados. Outros parâmetros permitem que você especifique o valor do parâmetro como texto digitado na linha de comando ou lido de um arquivo. Independentemente se um arquivo for obrigatório ou opcional, você deverá codificá-lo corretamente para que a AWS CLI possa entendê-lo. A codificação do arquivo deve corresponder à localidade padrão do sistema de leitura. É possível determinar isso usando o método `locale.getpreferredencoding()` do Python.

Esse método serve para carregar um arquivo para um único parâmetro. Consulte informações sobre como carregar vários parâmetros com um único arquivo em [Esqueletos da AWS CLI e arquivos de entrada na AWS CLI](cli-usage-skeleton.md).

**nota**  
Por padrão, o Windows PowerShell gera texto como UTF-16, o que entra em conflito com a codificação UTF-8 usada por arquivos JSON e muitos sistemas Linux. Recomendamos que você use `-Encoding ascii` com os comandos `Out-File` do PowerShell para garantir que a AWS CLI possa ler o arquivo resultante. 

**Topics**
+ [

## Como carregar um parâmetro de um arquivo
](#cli-usage-parameters-file-how)
+ [

## Arquivos binários
](#cli-usage-parameters-file-binary)
+ [

## Carregar um arquivo como um valor de sintaxe abreviada
](#cli-usage-parameters-file-shorthand)

## Como carregar um parâmetro de um arquivo
<a name="cli-usage-parameters-file-how"></a>

Às vezes é conveniente carregar um valor de parâmetro de um arquivo, em vez de tentar digitá-lo como um valor de parâmetro de linha de comando, por exemplo, quando o parâmetro é uma string JSON complexa. Para especificar um arquivo que contém o valor, especifique um URL de arquivo no formato a seguir.

```
file://complete/path/to/file
```
+ Os dois primeiros caracteres de barra “/” fazem parte da especificação. Se o caminho exigido começar com “/”, o resultado será três caracteres de barra: `file:///folder/file`.
+ O URL fornece o caminho para o arquivo que apresenta o conteúdo real do parâmetro. 
+ Ao usar arquivos com espaços ou caracteres especiais, siga as [regras de aspas e escape](cli-usage-parameters-quoting-strings.md) para o terminal. 

Os caminhos do arquivo no exemplo a seguir são interpretados como sendo relativos ao diretório de trabalho atual.

------
#### [ Linux or macOS ]

```
// Read from a file in the current directory
$ aws ec2 describe-instances --filters file://filter.json

// Read from a file in /tmp
$ aws ec2 describe-instances --filters file:///tmp/filter.json

// Read from a file with a filename with whitespaces
$ aws ec2 describe-instances --filters 'file://filter content.json'
```

------
#### [ Windows command prompt ]

```
// Read from a file in C:\temp
C:\> aws ec2 describe-instances --filters file://C:\temp\filter.json

// Read from a file with a filename with whitespaces
C:\> aws ec2 describe-instances --filters "file://C:\temp\filter content.json"
```

------

A opção de prefixo `file://` é compatível com as expansões de estilo Unix, inclusive "`~/`", "`./`" e "`../`". No Windows, a expressão "`~/`" se expande para o seu diretório de usuário, armazenado na variável de ambiente `%USERPROFILE%`. Por exemplo, no Windows 10, haveria normalmente um diretório de usuário em `%USERPROFILE%`.

Ainda é necessário inserir um caractere de escape nos documentos JSON que são incorporados como o valor de outro documento JSON.

```
$ aws sqs create-queue --queue-name my-queue --attributes file://attributes.json
```

**attributes.json**

```
{
  "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-west-2:0123456789012:deadletter\", \"maxReceiveCount\":\"5\"}"
}
```

## Arquivos binários
<a name="cli-usage-parameters-file-binary"></a>

Para comandos que incluem dados binários como um parâmetro, especifique que os dados são conteúdo binário usando o prefixo `fileb://`. Comandos que aceitam dados binários incluem: 
+  **`aws ec2 run-instances:`** `--user-data` parâmetro . 
+  **`aws s3api put-object:`** `--sse-customer-key` parâmetro . 
+  **`aws kms decrypt:`** `--ciphertext-blob` parâmetro . 

O exemplo a seguir gera uma chave binária AES de 256 bits usando uma ferramenta de linha de comando do Linux e a fornece ao Amazon S3 para criptografar o arquivo enviado no lado do servidor. 

```
$ dd if=/dev/urandom bs=1 count=32 > sse.key
32+0 records in
32+0 records out
32 bytes (32 B) copied, 0.000164441 s, 195 kB/s
$ aws s3api put-object \
    --bucket amzn-s3-demo-bucket \
    --key test.txt \
    --body test.txt \
    --sse-customer-key fileb://sse.key \
    --sse-customer-algorithm AES256
{
    "SSECustomerKeyMD5": "iVg8oWa8sy714+FjtesrJg==",
    "SSECustomerAlgorithm": "AES256",
    "ETag": "\"a6118e84b76cf98bf04bbe14b6045c6c\""
}
```

Para outro exemplo com referência a um arquivo que contém parâmetros formatados pelo JSON, consulte [Associar uma política gerenciada do IAM a um usuário](cli-services-iam.md#cli-services-iam-policy). 

## Carregar um arquivo como um valor de sintaxe abreviada
<a name="cli-usage-parameters-file-shorthand"></a>

Ao usar a sintaxe abreviada quando um valor é grande ou complexo, geralmente é mais fácil carregar um arquivo como um valor. Ao carregar um arquivo como um valor de sintaxe abreviada, a formatação muda um pouco. Em vez de `key=value`, você usa o operador `@=` no lugar do operador `=`. O `@=` indica à AWS CLI que o valor deve ser lido como um caminho de arquivo e não como uma string. O exemplo a seguir mostra um par de chave-valor carregando um arquivo como seu valor.

------
#### [ Linux or macOS ]

```
--option key@=file://template.txt
```

------
#### [ Windows ]

```
--option "key1@=file://template.txt"
```

------

O exemplo a seguir demonstra o carregamento de um arquivo de certificado para o comando `aws rolesanywhere create-trust-anchor`.

```
$ aws rolesanywhere create-trust-anchor --name TrustAnchor \
    --source sourceData={x509CertificateData@=file://root-ca.crt},sourceType="CERTIFICATE_BUNDLE"  \ 
    --enabled
```

Consulte mais informações sobre a sintaxe abreviada em [Uso da sintaxe simplificada na AWS CLI](cli-usage-shorthand.md).