이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 출력 형식 설정 AWS CLI
이 주제에서는 AWS Command Line Interface ()의 다양한 출력 형식을 설명합니다AWS CLI. AWS CLI 은(는) 다음 출력 형식을 지원합니다.
출력 형식을 선택하는 방법
구성 주제의 설명과 같이, 다음 세 가지 방법으로 출력 형식을 지정할 수 있습니다.
-
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
로 수행할 수 없는 고급 필터링의 경우 명령줄 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
출력에 text
및 aws 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 | +--------------+--------------+--------------+-----+