AWS CLI esqueletos e arquivos de entrada no 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á.

AWS CLI esqueletos e arquivos de entrada no AWS CLI

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

Sobre AWS CLI esqueletos e arquivos de entrada

A maioria dos comandos AWS Command Line Interface (AWS CLI) suporta a capacidade de aceitar todas as entradas de parâmetros de um arquivo usando o --cli-input-yaml parâmetro --cli-input-json s.

Esses mesmos comandos fornecem de forma útil o --generate-cli-skeleton parâmetro para gerar um arquivo em um YAML formato 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 AWS CLI comandos não são mapeados diretamente para AWS API operações individuais, como os aws s3comandos de . 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ê não souber se um comando específico oferece suporte a esses parâmetros, execute o comando a seguir, substituindo o service e command nomes com aqueles em que 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 comoJSON. Este é o valor padrão.

  • output— O modelo gerado inclui todos os parâmetros de saída formatados comoJSON.

Como o AWS CLI é essencialmente um “invólucro” em torno do serviçoAPI, o arquivo esqueleto espera que você faça referência a todos os parâmetros pelos nomes de API parâmetros subjacentes. Isso provavelmente é diferente do nome do AWS CLI parâmetro. Por exemplo, um AWS CLI parâmetro chamado user-name pode ser mapeado para o API parâmetro do AWS serviço 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 consultar o Guia de API referência do serviço para ver os nomes dos parâmetros 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 comando a seguir, ele gerará o modelo de parâmetro para o comando run-instances Amazon Elastic Compute Cloud (AmazonEC2).

JSON

O exemplo a seguir mostra como gerar um modelo formatado 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 --generate-cli-skeleton parâmetro para produzir direcione a saída para um arquivo para salvá-la.

    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. Certifique-se de que o arquivo ainda seja válido JSON depois de remover os elementos desnecessários.

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

    Neste exemplo, deixamos o DryRun parâmetro definido true para usar o recurso de tiragem a EC2 seco da Amazon. 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 Amazon Machine Image (AMI) a ser usada. Este exemplo pressupõe a AWS região padrão. AMIami-dfc39aefÉ uma imagem Amazon Linux de 64 bits hospedada na us-west-2 região. Se você usa uma região diferente, precisa encontrar a AMI ID 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://. O AWS CLI interpreta o caminho como relativo ao seu diretório de trabalho atual, portanto, no exemplo a seguir, que exibe somente o nome do arquivo sem caminho, ele procura o 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 funcionamento a seco indica que o JSON está formado corretamente e que os valores dos parâmetros 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 na verdade, inicia uma EC2 instância da Amazon e exibe os detalhes gerados pelo lançamento 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": [ ...