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á.
Definindo o formato de saída no AWS CLI
Este tópico descreve os diferentes formatos de saída do AWS Command Line Interface (AWS CLI). A AWS CLI oferece suporte aos seguintes formatos de saída:
-
text: a saída é formatada como várias linhas de valores de string separados por tabulação. Isso pode ser útil para passar a saída para um processador de texto, como
grep
,sed
ouawk
. -
table: a saída é formatada como uma tabela usando os caracteres +|- para formar as bordas da célula. Geralmente, a informação é apresentada em um formato "amigável", que é muito mais fácil de ler do que outros, mas não tão útil programaticamente.
Como selecionar o formato de saída
Como explicado no tópico sobre configuração, você pode especificar o formato de saída de três maneiras:
-
Usando a opção
output
em um perfil nomeado no arquivoconfig
: o exemplo a seguir ajusta o formato de saída padrão comotext
.[default] output=text
-
Usando a variável de ambiente
AWS_DEFAULT_OUTPUT
: a saída a seguir ajusta o formato comotable
para os comandos nessa sessão de linhas de comandos até que a variável seja alterada ou a sessão encerrada. Usar essa variável de ambiente substitui qualquer valor definido no arquivoconfig
.$
export AWS_DEFAULT_OUTPUT="table"
-
Usando a opção
--output
na linha de comando: o exemplo a seguir define a saída apenas deste comando comojson
. Usar essa opção no comando substitui qualquer variável de ambiente definida atualmente ou o valor no arquivoconfig
.$
aws swf list-domains --registration-status REGISTERED --output json
Importante
O tipo de saída especificado por você modifica a forma de operação da opção --query
.
-
Se você especificar
--output text
, a saída será paginada antes da aplicação do--query
filtro e AWS CLI executará a consulta uma vez em cada página da saída. Consequentemente, a consulta inclui o primeiro elemento correspondente em cada página, o que pode resultar em uma saída adicional inesperada. Para filtrar ainda mais a saída, é possível usar outras ferramentas da linha de comando, comohead
outail
. -
Se você especificar
--output json
,, a saída será completamente processada como uma única estrutura JSON nativa antes que o filtro--query
seja aplicado. Ele AWS CLI executa a consulta apenas uma vez em toda a estrutura, produzindo um resultado filtrado que é então gerado.
Formato da saída da JSON
JSON
Para uma filtragem mais avançada que talvez você não consiga fazer com --query
jq
, considere um JSON processador de linha de comando. Baixe e localize o tutorial oficial em http://stedolan.github.io/jq/
Veja a seguir um exemplo de JSON saída.
$
aws iam list-users --output json
{ "Users": [ { "Path": "/", "UserName": "Admin", "UserId": "AIDA1111111111EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/Admin", "CreateDate": "2014-10-16T16:03:09+00:00", "PasswordLastUsed": "2016-06-03T18:37:29+00:00" }, { "Path": "/backup/", "UserName": "backup-user", "UserId": "AIDA2222222222EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/backup/backup-user", "CreateDate": "2019-09-17T19:30:40+00:00" }, { "Path": "/", "UserName": "cli-user", "UserId": "AIDA3333333333EXAMPLE", "Arn": "arn:aws:iam::123456789012:user/cli-user", "CreateDate": "2019-09-17T19:11:39+00:00" } ] }
Formato de saída de texto
O text
formato organiza a AWS CLI saída em linhas delimitadas por tabulação. Ele funciona bem com ferramentas de texto Unix tradicionaisgrep
, como,sed
, eawk
, e o processamento de texto realizado por PowerShell.
O formato de saída text
segue a estrutura básica mostrada abaixo. As colunas são classificadas alfabeticamente pelos nomes de chave correspondentes do objeto subjacente. JSON
IDENTIFIER sorted-column1 sorted-column2 IDENTIFIER2 sorted-column1 sorted-column2
A seguir, veja um exemplo de saída text
. Cada campo é separado dos outros por tabulação, com uma guia adicional na qual há um campo vazio.
$
aws iam list-users --output text
USERS arn:aws:iam::123456789012:user/Admin 2014-10-16T16:03:09+00:00 2016-06-03T18:37:29+00:00 / AIDA1111111111EXAMPLE Admin USERS arn:aws:iam::123456789012:user/backup/backup-user 2019-09-17T19:30:40+00:00 /backup/ AIDA2222222222EXAMPLE backup-user USERS arn:aws:iam::123456789012:user/cli-user 2019-09-17T19:11:39+00:00 / AIDA3333333333EXAMPLE cli-user
A quarta coluna é o campo PasswordLastUsed
e está vazia nas duas últimas entradas porque esses usuários nunca fazem login no AWS Management Console.
Importante
É altamente recomendável que, se você especificar uma saída text
, também use sempre a opção --query para garantir um comportamento consistente.
Isso ocorre porque o formato de texto ordena alfabeticamente as colunas de saída pelo nome da chave do JSON objeto subjacente retornado pelo AWS serviço, e recursos similares podem não ter os mesmos nomes de chave. Por exemplo, a JSON representação de uma instância EC2 Amazon baseada em Linux pode ter elementos que não estão presentes na JSON representação de uma instância baseada em Windows ou vice-versa. Além disso, os recursos podem ter elementos de valores de chave adicionados ou removidos em futuras atualizações, alterando a ordem das colunas. Este é o local em que --query
expande a funcionalidade da saída text
para fornecer total controle sobre o formato de saída.
No exemplo a seguir, o comando especifica quais elementos devem ser exibidos e define a ordem das colunas com a notação da lista [key1, key2, ...]
. Isso oferece a você a segurança de que os valores de chave corretos sempre serão exibido na coluna esperada. Por fim, observe como as AWS CLI saídas None
são o valor de chaves que não existem.
$
aws iam list-users --output text --query 'Users[*].[UserName,Arn,CreateDate,PasswordLastUsed,UserId]'
Admin arn:aws:iam::123456789012:user/Admin 2014-10-16T16:03:09+00:00 2016-06-03T18:37:29+00:00 AIDA1111111111EXAMPLE backup-user arn:aws:iam::123456789012:user/backup-user 2019-09-17T19:30:40+00:00 None AIDA2222222222EXAMPLE cli-user arn:aws:iam::123456789012:user/cli-backup 2019-09-17T19:11:39+00:00 None AIDA3333333333EXAMPLE
O exemplo a seguir mostra como você pode usar grep
e awk
com a saída text
do comando aws ec2
describe-instances
. O primeiro comando exibe a zona de disponibilidade, o estado atual e o ID de cada instância na saída text
. O segundo comando processa essa saída para exibir somente a instância IDs de todas as instâncias em execução na Zona de us-west-2a
Disponibilidade.
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text
us-west-2a running i-4b41a37c us-west-2a stopped i-a071c394 us-west-2b stopped i-97a217a0 us-west-2a running i-3045b007 us-west-2a running i-6fc67758
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | grep us-west-2a | grep running | awk '{print $3}'
i-4b41a37c i-3045b007 i-6fc67758
O exemplo a seguir vai mais longe e mostra não apenas como filtrar a saída, mas como usar essa saída para automatizar a alteração dos tipos de instância para cada instância interrompida.
$
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[State.Name, InstanceId]' --output text |
>
grep stopped |
>
awk '{print $2}' |
>
while read line;
>
do aws ec2 modify-instance-attribute --instance-id $line --instance-type '{"Value": "m1.medium"}';
>
done
A text
saída também pode ser útil em PowerShell. Como as colunas na text
saída são delimitadas por tabulação, você pode facilmente dividir a saída em uma matriz usando o PowerShell delimitador`t
. O comando a seguir exibe o valor da terceira coluna (InstanceId
) se a primeira coluna (AvailabilityZone
) corresponder à string us-west-2a
.
PS C:\>
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Placement.AvailabilityZone, State.Name, InstanceId]' --output text | %{if ($_.split("`t")[0] -match "us-west-2a") { $_.split("`t")[2]; } }
-4b41a37c i-a071c394 i-3045b007 i-6fc67758
Observe que, embora o exemplo anterior mostre como usar o --query
parâmetro para analisar os JSON objetos subjacentes e extrair a coluna desejada, PowerShell ele tem sua própria capacidade de lidarJSON, se a compatibilidade entre plataformas não for uma preocupação. Em vez de tratar a saída como texto, como a maioria dos shells de comando exige, PowerShell permite usar o ConvertFrom-JSON
cmdlet para produzir um objeto estruturado hierarquicamente. Depois, é possível acessar diretamente o membro desejado usando esse objeto.
(aws ec2 describe-instances --output json | ConvertFrom-Json).Reservations.Instances.InstanceId
dica
Se você enviar o texto e filtrar a saída para um único campo usando o parâmetro --query
, a saída será uma única linha de valores separados por tabulação. Para obter cada valor em uma linha separada, você pode colocar o campo de saída entre colchetes, conforme mostrado nos exemplos a seguir.
Saída de linha única separada por tabulação:
$
aws iam list-groups-for-user --user-name susan --output text --query "Groups[].GroupName"
HRDepartment Developers SpreadsheetUsers LocalAdmins
Cada valor em sua própria linha, colocando [GroupName]
entre colchetes:
$
aws iam list-groups-for-user --user-name susan --output text --query "Groups[].
[
GroupName]
"
HRDepartment Developers SpreadsheetUsers LocalAdmins
Formato de saída de tabela
O formato table
produz representações legíveis da saída complexa da AWS CLI
em um formato tabular.
$
aws iam list-users --output table
----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ListUsers | +---------------------------------------------------------------------------------------------------------------------------------------------------------------+ || Users || |+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+| || Arn | CreateDate | PasswordLastUsed | Path | UserId | UserName || |+----------------------------------------------------+---------------------------+---------------------------+----------+-----------------------+-------------+| || arn:aws:iam::123456789012:user/Admin | 2014-10-16T16:03:09+00:00 | 2016-06-03T18:37:29+00:00 | / | AIDA1111111111EXAMPLE | Admin || || arn:aws:iam::123456789012:user/backup/backup-user | 2019-09-17T19:30:40+00:00 | | /backup/ | AIDA2222222222EXAMPLE | backup-user || || arn:aws:iam::123456789012:user/cli-user | 2019-09-17T19:11:39+00:00 | | / | AIDA3333333333EXAMPLE | cli-user || +---------------------------------------------------------------------------------------------------------------------------------------------------------------+
É possível combinar a opção --query
com o formato table
para exibir um conjunto de elementos pré-selecionado na saída bruta. As diferenças das saída entre as notações de lista e dicionário: no primeiro exemplo, os nomes de coluna são ordenados alfabeticamente, e, no segundo, as colunas sem nome são ordenadas conforme definido pelo usuário. Para obter mais informações sobre a opção --query
, consulte Filtrando a saída no AWS CLI.
$
aws ec2 describe-volumes --query 'Volumes[*].{ID:VolumeId,InstanceId:Attachments[0].InstanceId,AZ:AvailabilityZone,Size:Size}' --output table
------------------------------------------------------ | DescribeVolumes | +------------+----------------+--------------+-------+ | AZ | ID | InstanceId | Size | +------------+----------------+--------------+-------+ | us-west-2a| vol-e11a5288 | i-a071c394 | 30 | | us-west-2a| vol-2e410a47 | i-4b41a37c | 8 | +------------+----------------+--------------+-------+
$
aws ec2 describe-volumes --query 'Volumes[*].[VolumeId,Attachments[0].InstanceId,AvailabilityZone,Size]' --output table
---------------------------------------------------- | DescribeVolumes | +--------------+--------------+--------------+-----+ | vol-e11a5288| i-a071c394 | us-west-2a | 30 | | vol-2e410a47| i-4b41a37c | us-west-2a | 8 | +--------------+--------------+--------------+-----+