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

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

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

Esqueletos e arquivos de entrada da AWS CLI

A maioria dos comandos da AWS CLI aceita todas as entradas de parâmetros de um arquivo. Esses modelos podem ser gerados usando a opção generate-cli-skeleton.

Sobre esqueletos e arquivos de entrada da AWS CLI

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

Felizmente, esses mesmos comandos fornecem o parâmetro --generate-cli-skeleton para gerar um arquivo JSON com todos os parâmetros que você pode editar e preencher. Depois, você pode executar o comando com o parâmetro relevante --cli-input-json e apontar para o arquivo preenchido.

Importante

Vários comandos da AWS CLI não são mapeados diretamente para as operações individuais de API da AWS, como os comandos aws s3. Esses comandos não são compatíveis com os parâmetros --generate-cli-skeleton ou --cli-input-json descritos neste tópico. Se você souber se um comando específico é compatível com esses parâmetros, execute o comando a seguir, substituindo os nomes do serviço e do comando pelos quais você está interessado.

$ aws service command help

A saída inclui uma seção Synopsis que mostra os parâmetros compatíveis com o comando especificado.

$ aws iam list-users help ... SYNOPSIS list-users ... [--cli-input-json] ... [--generate-cli-skeleton <value>] ...

O parâmetro --generate-cli-skeleton faz com que o comando não seja executado, mas, em vez disso, gere e exibe um modelo de parâmetro que você pode personalizar e usar como entrada em um comando posterior. 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. Você também pode fazer referência ao 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 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. Verifique 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 padrão da AWS. 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 a ser associado ao diretório de trabalho atual, de forma que o exemplo a seguir que exibe somente o nome do arquivo sem nenhum caminho seja procurado pelo arquivo diretamente 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": [ ...