Esqueletos da AWS CLI e arquivos de entrada na AWS CLI - AWS Command Line Interface

Esta documentação é somente para a versão 1 da AWS CLI. Para obter a documentação relacionada à AWS CLI versão 2, consulte o Guia do usuário da versão 2.

Esqueletos da AWS CLI e arquivos de entrada na AWS CLI

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.

Sobre esqueletos e arquivos de entrada da AWS CLI

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 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 para o comando que você deseja usar ou consulte o Guia de referência da AWS CLI versão 1 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 run-instances do Amazon Elastic Compute Cloud (Amazon EC2).

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

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

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

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  4. Execute o comando com os parâmetros concluídos passando o arquivo do modelo concluído o 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.

  5. 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 } }
  6. 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

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.

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": [ ...