에서 출력 형식 설정 AWS CLI - AWS Command Line Interface

이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 출력 형식 설정 AWS CLI

이 주제에서는 AWS Command Line Interface ()의 다양한 출력 형식을 설명합니다AWS CLI. AWS CLI 은(는) 다음 출력 형식을 지원합니다.

  • json - 출력은 JSON 문자열 형식입니다.

  • text - 출력은 여러 줄의 탭으로 구분된 문자열 값으로 형식이 지정됩니다. 출력을 grep, sed 또는 awk와 같은 텍스트 프로세서로 전달하는 데 사용할 수 있습니다.

  • table - 출력은 셀 테두리를 형성하기 위해 +|- 문자를 사용하여 표로 형식이 지정됩니다. 일반적으로 읽기는 쉽지만 프로그래밍 방식으로는 유용하지 않은 "인간 친화적" 형식으로 정보를 표시합니다.

출력 형식을 선택하는 방법

구성 주제의 설명과 같이, 다음 세 가지 방법으로 출력 형식을 지정할 수 있습니다.

  • output 파일의 명명된 프로파일에서 config 옵션 사용 - 다음 예제에서는 기본 출력 형식을 text로 설정합니다.

    [default] output=text
  • AWS_DEFAULT_OUTPUT 환경 변수 사용 - 다음 출력은 변수가 변경되거나 세션이 끝날 때까지 이 명령줄 세션의 명령 형식을 table로 지정합니다. 이 환경 변수를 사용하면 config 파일에 설정된 값을 재정의합니다.

    $ export AWS_DEFAULT_OUTPUT="table"
  • 명령줄에서 --output 옵션 사용 - 다음 예제에서는 이 명령의 출력만 json으로 설정합니다. 명령에 이 옵션을 사용하면 현재 설정된 환경 변수 또는 config 파일의 값을 재정의합니다.

    $ aws swf list-domains --registration-status REGISTERED --output json
중요

지정한 출력 유형에 따라 --query 옵션 작동 방식이 변경됩니다.

  • --output text를 지정하면 --query 필터가 적용되기 전에 출력이 페이지 매김되고 는 출력의 페이지에서 쿼리를 한 번 AWS CLI 실행합니다. 이로 인해, 쿼리에는 예상치 못한 추가 출력이 발생할 수 있는 각 페이지의 첫 번째 일치하는 요소가 포함됩니다. 출력을 추가로 필터링하려면 head 또는 tail 등 다른 명령줄 도구를 사용할 수 있습니다.

  • --output json,을 지정하면 해당 출력을 하나의 네이티브 구조로 완전히 처리한 뒤에 --query 필터를 적용합니다. 는 전체 구조에 대해 쿼리를 한 번만 AWS CLI 실행하여 필터링된 결과를 생성한 다음 출력합니다.

JSON 출력 형식

JSON 는 의 기본 출력 형식입니다 AWS CLI. 대부분의 프로그래밍 언어는 내장 함수 또는 공개적으로 사용 가능한 라이브러리를 사용하여 JSON 문자열을 쉽게 디코딩할 수 있습니다. 형식이 지정된 JSON 출력을 필터링하고 형식을 지정하는 강력한 방법으로 출력을 - AWS CLI JSON-쿼리 옵션과 결합할 수 있습니다.

로 수행할 수 없는 고급 필터링의 경우 명령줄 JSON 프로세서jq인 를 고려할 --query수 있습니다. http://stedolan.github.io/jq/에서 이 처리기를 다운로드하고 공식 자습서를 찾아볼 수 있습니다.

다음은 JSON 출력의 예입니다.

$ 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" } ] }

텍스트 출력 형식

text 형식은 AWS CLI 출력을 탭으로 구분된 줄로 구성합니다. grep, 및 sed와 같은 기존 Unix 텍스트 도구 awk및 에서 수행하는 텍스트 처리와 함께 사용할 수 있습니다 PowerShell.

text 출력 형식은 아래와 같은 기본 구조를 따릅니다. 열은 기본 JSON 객체의 해당 키 이름을 기준으로 알파벳순으로 정렬됩니다.

IDENTIFIER sorted-column1 sorted-column2 IDENTIFIER2 sorted-column1 sorted-column2

다음은 text 출력의 예제입니다. 각 필드는 다른 항목과 구분된 탭이며 빈 필드가 있는 추가 탭이 있습니다.

$ 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

네 번째 열은 PasswordLastUsed 필드이며, 해당 사용자가 AWS Management Console콘솔에 로그인하지 않기 때문에 마지막 두 항목은 비어 있습니다.

중요

text 출력을 지정하는 경우 일관된 동작을 보장하기 위해 항상 --query 옵션도 사용하는 것이 좋습니다.

이는 텍스트 형식이 AWS 서비스에서 반환한 기본 JSON 객체의 키 이름으로 출력 열을 알파벳순으로 정렬하고 유사한 리소스의 키 이름이 동일하지 않을 수 있기 때문입니다. 예를 들어 Linux 기반 Amazon EC2 인스턴스의 JSON 표현에는 Windows 기반 인스턴스의 JSON 표현에 존재하지 않는 요소가 있거나 그 반대일 수 있습니다. 또한 리소스에는 향후 업데이트에서 추가되거나 제거되어 열 순서를 변경하는 키-값 요소가 있을 수 있습니다. 이러한 경우 --query를 사용하면 출력 형식을 완전히 제어할 수 있도록 text 출력의 기능이 향상됩니다.

다음 예제에서 명령은 표시할 요소를 지정하고 목록 표기법 [key1, key2, ...]를 사용하여 열의 순서를 정의합니다. 이렇게 하면 예상 열에 올바른 키 값이 항상 표시된다는 완전한 확신을 사용자에게 제공할 수 있습니다. 마지막으로 AWS CLI 출력이 존재하지 않는 키None의 값으로 어떻게 표시되는지 알아봅니다.

$ 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

다음 예제는 grep 명령의 awk 출력에 textaws ec2 describe-instances를 사용하는 방법을 보여줍니다. 첫 번째 명령은 text 출력에 각 인스턴스의 가용 영역, 현재 상태 및 인스턴스 ID를 표시합니다. 두 번째 명령은 를 출력하는 프로세스를 처리하여 us-west-2a 가용 영역에서 실행 중인 모든 인스턴스IDs의 인스턴스만 표시합니다.

$ 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

다음 예제는 한 단계 더 나아가 출력을 필터링하는 방법뿐만 아니라 출력을 사용하여 중지된 각 인스턴스의 인스턴스 유형 변경을 자동화하는 방법을 보여줍니다.

$ 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

text 출력은 에서도 유용할 수 있습니다 PowerShell. text 출력의 열은 탭으로 구분되므로 PowerShell의 `t 구분 기호를 사용하여 출력을 배열로 쉽게 분할할 수 있습니다. 다음 명령은 첫 번째 열(InstanceId)이 AvailabilityZone 문자열과 일치할 경우 세 번째 열(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

이전 예제에서는 --query 파라미터를 사용하여 기본 JSON 객체를 구문 분석하고 원하는 열을 가져오는 방법을 보여주지만, 교차 플랫폼 호환성이 문제가 되지 않는 JSON경우 를 처리할 수 있는 자체 기능이 PowerShell 있습니다. 대부분의 명령 쉘에서 요구하는 대로 출력을 텍스트로 처리하는 대신 ConvertFrom-JSON cmdlet을 사용하여 계층 구조화된 객체를 생성할 수 PowerShell 있습니다. 그런 다음 해당 객체에서 직접 원하는 멤버에 액세스할 수 있습니다.

(aws ec2 describe-instances --output json | ConvertFrom-Json).Reservations.Instances.InstanceId
작은 정보

텍스트를 출력하고 --query 파라미터를 사용하여 단일 필드로 필터링하는 경우, 탭으로 구분된 값이 한 줄로 출력됩니다. 각 값을 별개의 줄로 가져오려면 다음 예제에 표시된 대로 출력 필드를 괄호 안에 넣으면 됩니다.

탭으로 구분되어 한 줄로 출력:

$ aws iam list-groups-for-user --user-name susan --output text --query "Groups[].GroupName"
HRDepartment Developers SpreadsheetUsers LocalAdmins

[GroupName]을 괄호 안에 넣어서 각 값을 자체의 줄에 출력:

$ aws iam list-groups-for-user --user-name susan --output text --query "Groups[].[GroupName]"
HRDepartment Developers SpreadsheetUsers LocalAdmins

테이블 출력 형식

table 형식은 사람이 읽을 수 있는 복잡한 AWS CLI 출력 표시를 표 형식으로 생성합니다.

$ 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 || +---------------------------------------------------------------------------------------------------------------------------------------------------------------+

--query 옵션을 table 형식과 결합하여 원시 출력에서 미리 선택한 요소 집합을 표시할 수 있습니다. 사전 표기법과 목록 표기법의 출력 차이에 주의하십시오. 첫 번째 예제에서는 열 이름이 알파벳 순서로 정렬되고 두 번째 예제에서는 이름 없는 열이 사용자가 정의한 방식으로 정렬됩니다. --query 옵션에 대한 자세한 내용은 에서 출력 필터링 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 | +--------------+--------------+--------------+-----+