

**Esta documentação é somente para a versão 1 da AWS CLI.**

Anunciamos o próximo fim do suporte para a AWS CLI versão 1. É recomendável migrar para a AWS CLI versão 2. Para saber as datas e receber detalhes e informações adicionais sobre como migrar, consulte o [anúncio](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/). Para obter a documentação relacionada à AWS CLI versão 2, consulte o [Guia do usuário da versão 2](https://docs.aws.amazon.com/cli/latest/userguide/).

# Esqueletos da AWS CLI e arquivos de entrada na AWS CLI
<a name="cli-usage-skeleton"></a>

A maioria dos comandos da AWS CLI aceita as entradas de parâmetro importadas de um arquivo. Esses modelos podem ser gerados usando a opção `generate-cli-skeleton` e, depois, ser importados usando os parâmetros `--cli-input-json`.

**Topics**
+ [Sobre esqueletos e arquivos de entrada da AWS CLI](#cli-usage-skeleton-about)
+ [Gerar e importar um esqueleto de comando](#cli-usage-skeleton-generate)
+ [Combinar arquivos de entrada e parâmetros da linha de comandos](#cli-usage-skeleton-combine)

## Sobre esqueletos e arquivos de entrada da AWS CLI
<a name="cli-usage-skeleton-about"></a>

A maioria dos comandos da AWS Command Line Interface (AWS CLI) permite aceitar as entradas de parâmetro usando os parâmetros `--cli-input-json`.

Esses mesmos comandos usam o parâmetro `--generate-cli-skeleton` para gerar um arquivo JSON com todos os parâmetros que você pode editar e preencher. Depois, é possível executar o comando com o parâmetro `--cli-input-json` e apontar para o arquivo preenchido.

**Importante**  
Comandos personalizados da AWS CLI, como os [comandos `aws s3`](https://docs.aws.amazon.com/cli/v1/reference/s3/index.html) não são compatíveis com os parâmetros `--generate-cli-skeleton` ou `--cli-input-json` descritos neste tópico. Para verificar se um comando específico é compatível com esses parâmetros, execute o [comando `help`](cli-usage-help.md#cli-usage-help-command) para o comando que você deseja usar ou consulte o [Guia de referência da AWS CLI versão 1](https://docs.aws.amazon.com/cli/v1/reference/) ou o .

O `--generate-cli-skeleton` gera e exibe um modelo de parâmetro que pode ser personalizado e usado como entrada em um comando. O modelo gerado inclui todos os parâmetros compatíveis com o comando.

O parâmetro `--generate-cli-skeleton` aceita um dos seguintes valores:
+ `input`: o modelo gerado inclui todos os parâmetros de entrada formatados como JSON. Este é o valor padrão.
+ `output` – o modelo gerado inclui todos os parâmetros de saída formatados como JSON. 

Como a AWS CLI é essencialmente um “wrapper” em torno da API de serviço, o arquivo de esqueleto espera que você faça referência a todos os parâmetros pelo nome do parâmetro da API subjacente. Isso provavelmente é diferente do nome do parâmetro da AWS CLI. Por exemplo, um parâmetro da AWS CLI chamado `user-name` pode ser mapeado para o parâmetro da API do serviço da AWS chamado `UserName` (observe a capitalização alterada e o traço ausente). Recomendamos usar a opção `--generate-cli-skeleton` para gerar o modelo com os nomes de parâmetro “corretos” a fim de evitar erros. Consulte o Guia de referência da API do serviço para ver os nomes de parâmetro esperados. É possível excluir quaisquer parâmetros do modelo que não sejam necessários e para os quais você não deseja fornecer um valor.

Por exemplo, se você executar o seguinte comando, ele gerará o modelo de parâmetro para o comando do Amazon Elastic Compute Cloud (Amazon EC2) **run-instances**.

------
#### [ JSON ]

O exemplo a seguir mostra como gerar um modelo formatado em JSON usando o valor padrão (`input`) para o `--generate-cli-skeleton` parâmetro.

```
$ aws ec2 run-instances --generate-cli-skeleton
```

```
{
    "DryRun": true,
    "ImageId": "",
    "MinCount": 0,
    "MaxCount": 0,
    "KeyName": "",
    "SecurityGroups": [
        ""
    ],
    "SecurityGroupIds": [
        ""
    ],
    "UserData": "",
    "InstanceType": "",
    "Placement": {
        "AvailabilityZone": "",
        "GroupName": "",
        "Tenancy": ""
    },
    "KernelId": "",
    "RamdiskId": "",
    "BlockDeviceMappings": [
        {
            "VirtualName": "",
            "DeviceName": "",
            "Ebs": {
                "SnapshotId": "",
                "VolumeSize": 0,
                "DeleteOnTermination": true,
                "VolumeType": "",
                "Iops": 0,
                "Encrypted": true
            },
            "NoDevice": ""
        }
    ],
    "Monitoring": {
        "Enabled": true
    },
    "SubnetId": "",
    "DisableApiTermination": true,
    "InstanceInitiatedShutdownBehavior": "",
    "PrivateIpAddress": "",
    "ClientToken": "",
    "AdditionalInfo": "",
    "NetworkInterfaces": [
        {
            "NetworkInterfaceId": "",
            "DeviceIndex": 0,
            "SubnetId": "",
            "Description": "",
            "PrivateIpAddress": "",
            "Groups": [
                ""
            ],
            "DeleteOnTermination": true,
            "PrivateIpAddresses": [
                {
                    "PrivateIpAddress": "",
                    "Primary": true
                }
            ],
            "SecondaryPrivateIpAddressCount": 0,
            "AssociatePublicIpAddress": true
        }
    ],
    "IamInstanceProfile": {
        "Arn": "",
        "Name": ""
    },
    "EbsOptimized": true
}
```

------

## Gerar e importar um esqueleto de comando
<a name="cli-usage-skeleton-generate"></a>

**Para gerar e usar um arquivo de esqueleto de parâmetro**

1. Execute o comando com o parâmetro `--generate-cli-skeleton` para produzir JSON e direcionar a saída a um arquivo para salvá-lo.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
   ```

------

1. Abra o arquivo de esqueleto do parâmetro em seu editor de texto e remova os parâmetros que não são mais necessários. Por exemplo, você pode reduzir o modelo ao indicado a seguir. Confirme se o arquivo ainda é JSON válido depois de remover os elementos que não são necessários.

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "",
       "KeyName": "",
       "SecurityGroups": [
           ""
       ],
       "InstanceType": "",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

   Neste exemplo, deixamos o parâmetro `DryRun` definido como `true` para usar o recurso de simulação do Amazon EC2. Esse recurso permite que você teste com segurança o comando sem realmente criar ou modificar nenhum recursos. 

1. Preencha os valores restantes com valores apropriados para seu cenário. Neste exemplo, fornecemos o tipo de instância, o nome da chave, o grupo de segurança e o identificador da imagem de máquina da Amazon (AMI) que devem ser usados. Este exemplo assume a Região da AWS padrão. A AMI `ami-dfc39aef` é uma imagem de 64 bits do hospedada na região `us-west-2`. Se você usar uma região diferente, será necessário [encontrar o ID da AMI correta para usar](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

   ```
   {
       "DryRun": true,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

1. Execute o comando com os parâmetros concluídos, transmitindo o arquivo do modelo concluído ao parâmetro `--cli-input-json` usando o prefixo `file://`. A AWS CLI interpreta o caminho como sendo relativo ao diretório de trabalho atual. No exemplo a seguir, a AWS CLI procura o arquivo no diretório de trabalho atual.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json
   ```

   ```
   A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
   ```

------

   O erro de simulação indica que JSON está formado corretamente e os valores de parâmetro são válidos. Se outros problemas forem relatados na saída, corrija-os e repita a etapa anterior até que a mensagem “`Request would have succeeded`“ seja exibida. 

1. Agora você pode definir o parâmetro `DryRun` como `false` para desativar a simulação.

------
#### [ JSON ]

   ```
   {
       "DryRun": false,
       "ImageId": "ami-dfc39aef",
       "KeyName": "mykey",
       "SecurityGroups": [
           "my-sg"
       ],
       "InstanceType": "t2.micro",
       "Monitoring": {
           "Enabled": true
       }
   }
   ```

------

1. Execute o comando, e `run-instances` realmente iniciará uma instância do Amazon EC2 e exibirá os detalhes gerados pelo início bem-sucedido. O formato da saída é controlado pelo parâmetro `--output`, separadamente do formato do modelo de parâmetro de entrada.

------
#### [ JSON ]

   ```
   $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
   ```

   ```
   {
       "OwnerId": "123456789012",
       "ReservationId": "r-d94a2b1",
       "Groups": [],
       "Instances": [
   ...
   ```

------

## Combinar arquivos de entrada e parâmetros da linha de comandos
<a name="cli-usage-skeleton-combine"></a>

Um arquivo de entrada pode ser usado para todos os parâmetros ou pode ser combinado com os parâmetros especificados na AWS CLI. É possível usar esse recurso para configurações que você reutiliza com frequência em um arquivo de entrada, mantendo suas configurações individuais no próprio comando.

Os exemplos de `aws ec2 run-instances` a seguir combinam o uso de um arquivo de entrada e parâmetros. Fornecemos o tipo de instância, o nome da chave, o grupo de segurança e o identificador da imagem de máquina da Amazon (AMI) que devem ser usados e assumimos a Região da AWS padrão. A AMI `ami-dfc39aef` é uma imagem de 64 bits do hospedada na região `us-west-2`. Se você usar uma região diferente, será necessário [encontrar o ID da AMI correta para usar](https://aws.amazon.com/amazon-linux-ami/).

------
#### [ JSON ]

Conteúdo do arquivo JSON:

```
{
    "ImageId": "ami-dfc39aef",
    "KeyName": "mykey",
    "SecurityGroups": [
        "my-sg"
    ],
    "InstanceType": "t2.micro",
    "Monitoring": {
        "Enabled": true
    }
}
```

------

O exemplo a seguir usa o arquivo de entrada em conjunto com o parâmetro `--dry-run` para executar uma simulação do comando e confirmar se você tem as permissões necessárias e se preencheu o arquivo com valores válidos.

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --dry-run
```

```
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
```

------

O exemplo a seguir usa o mesmo arquivo de entrada, mas com o parâmetro `--no-dry-run` para executar o comando na íntegra.

------
#### [ JSON ]

```
$ aws ec2 run-instances --cli-input-json file://ec2runinst.json --no-dry-run --output json
```

```
{
    "OwnerId": "123456789012",
    "ReservationId": "r-d94a2b1",
    "Groups": [],
    "Instances": [
...
```

------