이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
필터 AWS CLI 출력
AWS Command Line Interface (AWS CLI) 에는 출력을 필터링하는 데 개별적으로 또는 함께 사용할 수 있는 서버 측 필터링과 클라이언트 측 필터링이 모두 있습니다. AWS CLI 서버 측 필터링이 먼저 처리되고 클라이언트 측 필터링에 대한 출력을 반환합니다.
-
서버측 필터링은 에서 지원되며API, 일반적으로 매개 변수를 사용하여 구현합니다.
--filter
이 서비스는 일치하는 결과만 반환하므로 대규모 데이터 집합의 HTTP 응답 시간을 단축할 수 있습니다. -
클라이언트측 필터링은 AWS CLI 클라이언트가 매개변수를 사용하여 지원합니다.
--query
이 파라미터에는 서버 측 필터링에 없을 수 있는 기능이 있습니다.
서버 측 필터링
의 서버측 AWS CLI 필터링은 서비스에서 제공합니다. AWS API AWS 서비스는 필터와 일치하는 HTTP 응답의 레코드만 반환하므로 대규모 데이터 세트의 HTTP 응답 시간을 단축할 수 있습니다. 서버 측 필터링은 서비스에 의해 정의되므로 매개 변수 이름과 함수는 API 서비스마다 다릅니다. 필터링에 사용되는 몇 가지 일반적인 매개 변수 이름은 다음과 같습니다.
-
--filters
(예: ec2, autoscaling 및 rds). -
filter
라는 단어로 시작하는 이름입니다(예:aws dynamodb scan
명령의 경우--filter-expression
).
특정 명령에 서버측 필터링이 있는지 여부와 필터링 규칙에 대한 자세한 내용은 AWS CLI 참조 안내서 2 참조 안내서를 참조하십시오.
클라이언트 측 필터링
는 매개 변수와 함께 기본 제공 JSON 기반 클라이언트측 필터링 기능을 AWS CLI 제공합니다. --query
--query
매개 변수는 출력의 내용과 스타일을 사용자 지정하는 데 사용할 수 있는 강력한 도구입니다. --query
파라미터는 서버로부터 수신되는 HTTP 응답을 받아 결과를 필터링한 다음 표시합니다. 필터링하기 전에 전체 HTTP 응답이 클라이언트에 전송되므로 대규모 데이터 집합의 경우 클라이언트측 필터링이 서버측 필터링보다 느릴 수 있습니다.
쿼리는 구문을 사용하여 JMESPath 출력을 필터링하기 위한 표현식을 만듭니다.
중요
지정한 출력 유형에 따라 --query
옵션 작동 방식이 변경됩니다.
-
지정하는
--output text
경우--query
필터가 적용되기 전에 출력에 페이지가 매겨지고 출력의 각 페이지에서 쿼리가 한 번씩 AWS CLI 실행됩니다. 이로 인해, 쿼리에는 예상치 못한 추가 출력이 발생할 수 있는 각 페이지의 첫 번째 일치하는 요소가 포함됩니다. 출력을 추가로 필터링하려면head
또는tail
등 다른 명령줄 도구를 사용할 수 있습니다. -
--output json
,을 지정하면 해당 출력을 하나의 네이티브 구조로 완전히 처리한 뒤에--query
필터를 적용합니다. 는 전체 구조에 대해 쿼리를 한 번만 AWS CLI 실행하여 필터링된 결과를 생성한 다음 출력합니다.
클라이언트 측 필터링 주제
시작하기 전에
이 예제에서 사용된 필터 표현식을 사용할 때는 터미널 셸에 올바른 인용 규칙을 사용해야 합니다. 자세한 내용은 문자열이 포함된 따옴표 및 리터럴 AWS CLI 단원을 참조하십시오.
다음 JSON 출력은 --query
파라미터가 생성할 수 있는 결과의 예를 보여줍니다. 출력은 개별 Amazon EC2 인스턴스에 연결된 세 개의 Amazon EBS 볼륨을 설명합니다.
$
aws ec2 describe-volumes
{ "Volumes": [ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-2e410a47", "State": "in-use", "SnapshotId": "snap-708e8348", "CreateTime": "2013-09-18T20:26:15.000Z", "Size": 8 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ] }
식별자
식별자는 출력 값의 레이블입니다. 필터를 만들 때 식별자를 사용하여 쿼리 결과 범위를 좁힙니다. 다음 출력 예제에서는 Volumes
, AvailabilityZone
, AttachTime
등 모든 식별자가 강조 표시됩니다.
$
aws ec2 describe-volumes
{ "
Volumes
": [ { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2013-09-17T00:55:03.000Z", "InstanceId
": "i-a071c394", "VolumeId
": "vol-e11a5288", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-e11a5288", "State
": "in-use", "SnapshotId
": "snap-f23ec1c8", "CreateTime
": "2013-09-17T00:55:03.000Z", "Size
": 30 }, { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2013-09-18T20:26:16.000Z", "InstanceId
": "i-4b41a37c", "VolumeId
": "vol-2e410a47", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-2e410a47", "State
": "in-use", "SnapshotId
": "snap-708e8348", "CreateTime
": "2013-09-18T20:26:15.000Z", "Size
": 8 }, { "AvailabilityZone
": "us-west-2a", "Attachments
": [ { "AttachTime
": "2020-11-20T19:54:06.000Z", "InstanceId
": "i-1jd73kv8", "VolumeId
": "vol-a1b3c7nd", "State
": "attached", "DeleteOnTermination
": true, "Device
": "/dev/sda1" } ], "VolumeType
": "standard", "VolumeId
": "vol-a1b3c7nd", "State
": "in-use", "SnapshotId
": "snap-234087fb", "CreateTime
": "2020-11-20T19:54:05.000Z", "Size
": 15 } ] }
자세한 내용은 JMESPath웹 사이트의 식별자를
목록에서 선택
목록 또는 배열은 [
의 Volumes
및 Attachments
등 대괄호 “시작하기 전에” 뒤에 오는 식별자입니다.
구문
<listName>[ ]
배열의 모든 출력을 필터링하려면 와일드 카드 표기법을 사용할 수 있습니다. 와일드카드*
표기법을 사용하여 요소를 반환하는 데 사용되는 표현식입니다.
다음 예제에서는 모든 Volumes
내용을 쿼리합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ]
인덱스별로 배열의 특정 볼륨을 보려면 배열 인덱스를 호출합니다. 예를 들어, Volumes
배열의 첫 번째 항목은 인덱스가 0이고 Volumes[0]
쿼리가 생성됩니다. 배열 인덱스에 대한 자세한 내용은 웹 사이트의 인덱스 표현식을
$
aws ec2 describe-volumes \ --query 'Volumes[0]'
{ "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }
인덱스별로 특정 범위의 볼륨을 보려면 다음 구문과 함께 slice
를 사용합니다. 여기서 start는 시작 배열 인덱스이고, stop은 필터가 처리를 중지하는 인덱스이고, step은 건너뛰기 간격입니다.
구문
<arrayName>[<start>:<stop>:<step>]
다음 항목 중 하나라도 슬라이스 표현식에서 생략된 경우, 다음 기본값을 사용합니다.
-
시작 - 목록의 첫 번째 인덱스, 0.
-
중지 - 목록의 마지막 인덱스.
-
단계 - 건너뛰기 단계 없음. 여기서 값은 1입니다.
처음 두 볼륨만 반환하려면 다음 예제와 같이 시작 값 0, 중지 값 2, 단계 값 1을 사용합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[0:2:1]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-2e410a47", "State": "in-use", "SnapshotId": "snap-708e8348", "CreateTime": "2013-09-18T20:26:15.000Z", "Size": 8 } ]
이 예제에는 기본값이 포함되어 있으므로 슬라이스를 Volumes[0:2:1]
에서 Volumes[:2]
(으)로 줄일 수 있습니다.
다음 예제에서는 기본값을 생략하고 전체 배열에서 두 볼륨마다 반환합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[::2]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 } ]
단계는 다음 예제와 같이 배열의 역순으로 필터링하는 음수를 사용할 수도 있습니다.
$
aws ec2 describe-volumes \ --query 'Volumes[::-2]'
[ { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-a1b3c7nd", "State": "in-use", "SnapshotId": "snap-234087fb", "CreateTime": "2020-11-20T19:54:05.000Z", "Size": 15 }, { "AvailabilityZone": "us-west-2a", "Attachments": [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], "VolumeType": "standard", "VolumeId": "vol-e11a5288", "State": "in-use", "SnapshotId": "snap-f23ec1c8", "CreateTime": "2013-09-17T00:55:03.000Z", "Size": 30 } ]
자세한 내용은 JMESPath웹 사이트의 슬라이스를
중첩된 데이터 필터링
중첩된 값의 Volumes[*]
필터링 범위를 좁히려면 마침표 및 필터 기준을 추가하여 하위 표현식을 사용합니다.
구문
<expression>.<expression>
다음 예제에서는 모든 볼륨에 대한 모든 Attachments
정보를 보여줍니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments'
[ [ { "AttachTime": "2013-09-17T00:55:03.000Z", "InstanceId": "i-a071c394", "VolumeId": "vol-e11a5288", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], [ { "AttachTime": "2013-09-18T20:26:16.000Z", "InstanceId": "i-4b41a37c", "VolumeId": "vol-2e410a47", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ], [ { "AttachTime": "2020-11-20T19:54:06.000Z", "InstanceId": "i-1jd73kv8", "VolumeId": "vol-a1b3c7nd", "State": "attached", "DeleteOnTermination": true, "Device": "/dev/sda1" } ] ]
중첩된 값으로 추가로 필터링하려면 중첩된 각 식별자에 대한 표현식을 추가합니다. 다음 예제에서는 모든 State
에 대한 Volumes
이(가) 나와 있습니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[*].State'
[ [ "attached" ], [ "attached" ], [ "attached" ] ]
결과 병합
자세한 내용은 JMESPath웹 사이트를 참조하십시오 SubExpressions
와일드카드 표기법을 제거함으로써 Volumes[*].Attachments[*].State
에 대한 결과를 병합하여 Volumes[*].Attachments[].State
쿼리를 생성할 수 있습니다. 병합은 흔히 결과의 가독성을 높이는 데 유용합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].State'
[ "attached", "attached", "attached" ]
자세한 내용은 JMESPath웹 사이트의 Flatten을
특정 값에 대한 필터링
목록의 특정 값을 필터링하려면 다음 구문과 같이 필터 표현식을 사용합니다.
구문
? <expression> <comparator> <expression>]
표현식 비교기에는 ==
, !=
, <
, <=
, >
, >=
이(가) 포함됩니다. 다음 예제에서는 VolumeIds
Volumes
의 모든 Attached
에 대해 State
을(를) 필터링합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId'
[ [ "vol-e11a5288" ], [ "vol-2e410a47" ], [ "vol-a1b3c7nd" ] ]
그런 다음 이를 병합하여 다음 예제처럼 되게 할 수 있습니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId[]'
[ "vol-e11a5288", "vol-2e410a47", "vol-a1b3c7nd" ]
다음 예제에서는 크기가 20보다 작은 모든 VolumeIds
의 Volumes
을(를) 필터링합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[?Size < `20`].VolumeId'
[ "vol-2e410a47", "vol-a1b3c7nd" ]
자세한 내용은 JMESPath웹 사이트의 필터 표현식을
파이핑 표현식
필터 결과를 새 목록으로 파이핑한 후, 다음 구문을 사용하여 다른 표현식으로 결과를 필터링할 수 있습니다.
구문
<expression> | <expression>]
다음 예제에서는 Volumes[*].Attachments[].InstanceId
표현식의 필터 결과를 가져와 배열의 첫 번째 결과를 출력합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId | [0]'
"i-a071c394"
이 예제는 먼저 다음 표현식에서 배열을 생작성하여 이 작업을 수행합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId'
"i-a071c394", "i-4b41a37c", "i-1jd73kv8"
그런 다음 해당 배열의 첫 번째 요소를 반환합니다.
"i-a071c394"
자세한 내용은 JMESPath웹 사이트의 파이프 표현식을
여러 식별자 값에 대한 필터링
여러 식별자를 필터링하려면 다음 구문을 사용하여 다중 선택 목록을 사용합니다.
구문
<listName>[].[<expression>, <expression>]
다음 예제에서는 VolumeId
및 VolumeType
이(가) Volumes
목록에서 필터링되어 다음 표현식이 생성됩니다.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType]'
[ [ "vol-e11a5288", "standard" ], [ "vol-2e410a47", "standard" ], [ "vol-a1b3c7nd", "standard" ] ]
중첩된 데이터를 목록에 추가하려면 다른 다중 선택 목록을 추가합니다. 다음 예제에서는 중첩 InstanceId
목록에서 State
및 Attachments
도 필터링하여 이전 예제를 확장합니다. 그러면 다음과 같은 표현식이 생성됩니다.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State]]'
[ [ "vol-e11a5288", "standard", [ [ "i-a071c394", "attached" ] ] ], [ "vol-2e410a47", "standard", [ [ "i-4b41a37c", "attached" ] ] ], [ "vol-a1b3c7nd", "standard", [ [ "i-1jd73kv8", "attached" ] ] ] ]
더 읽기 쉽게 하려면 다음 예제와 같이 표현식을 병합합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType, Attachments[].[InstanceId, State][]][]'
[ "vol-e11a5288", "standard", [ "i-a071c394", "attached" ], "vol-2e410a47", "standard", [ "i-4b41a37c", "attached" ], "vol-a1b3c7nd", "standard", [ "i-1jd73kv8", "attached" ] ]
자세한 내용은 JMESPath웹 사이트의 다중 선택 목록을
식별자 값에 레이블 추가
이 출력을 더 읽기 쉽게 하려면 다음 구문을 사용하여 다중 선택 해시를 사용합니다.
구문
<listName>[].{<label>: <expression>, <label>: <expression>}
식별자 레이블이 식별자 이름과 같을 필요는 없습니다. 다음 예제에서는 VolumeType
값에 VolumeType
레이블을 사용합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[].{VolumeType: VolumeType}'
[ { "VolumeType": "standard", }, { "VolumeType": "standard", }, { "VolumeType": "standard", } ]
간단히, 다음 예제에서는 각 레이블의 식별자 이름을 유지하고 모든 볼륨에 대해 VolumeId
, VolumeType
, InstanceId
및 State
을(를) 표시합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[ { "VolumeId": "vol-e11a5288", "VolumeType": "standard", "InstanceId": "i-a071c394", "State": "attached" }, { "VolumeId": "vol-2e410a47", "VolumeType": "standard", "InstanceId": "i-4b41a37c", "State": "attached" }, { "VolumeId": "vol-a1b3c7nd", "VolumeType": "standard", "InstanceId": "i-1jd73kv8", "State": "attached" } ]
자세한 내용은 웹 사이트의 멀티셀렉트 해시를
함수
JMESPath구문에는 쿼리에 사용할 수 있는 여러 함수가 포함되어 있습니다. JMESPath함수에 대한 자세한 내용은 JMESPath웹 사이트의 내장 함수를
함수를 쿼리에 통합하는 방법을 보여주기 위해 다음 예제에서는 sort_by
함수를 사용합니다. sort_by
함수는 다음 구문을 사용하여 표현식을 정렬 키로 사용해 배열을 정렬합니다.
구문
sort_by(<listName>, <sort expression>)[].<expression>
다음 예제에서는 이전의 다중 선택 해시 예제를 사용하고 VolumeId
(으)로 출력을 정렬합니다.
$
aws ec2 describe-volumes \ --query 'sort_by(Volumes, &VolumeId)[].{VolumeId: VolumeId, VolumeType: VolumeType, InstanceId: Attachments[0].InstanceId, State: Attachments[0].State}'
[ { "VolumeId": "vol-2e410a47", "VolumeType": "standard", "InstanceId": "i-4b41a37c", "State": "attached" }, { "VolumeId": "vol-a1b3c7nd", "VolumeType": "standard", "InstanceId": "i-1jd73kv8", "State": "attached" }, { "VolumeId": "vol-e11a5288", "VolumeType": "standard", "InstanceId": "i-a071c394", "State": "attached" } ]
자세한 내용은 웹 사이트의 sort_by를
고급 --query
예제
특정 항목에서 정보를 추출하는 방법
다음 예제에서는 목록에서 특정 항목을 찾은 다음 해당 항목에서 정보를 추출하는 데 --query
파라미터를 사용합니다. 이 예제에서는 지정된 서비스 엔드포인트에 연결된 모든 AvailabilityZones
을(를) 나열합니다. 지정된 ServiceDetails
을 가진 ServiceName
목록에서 해당 항목을 추출한 다음, 선택한 항목에서 AvailabilityZones
필드를 출력합니다.
$
aws --region us-east-1 ec2 describe-vpc-endpoint-services \ --query 'ServiceDetails[?ServiceName==`com.amazonaws.us-east-1.ecs`].AvailabilityZones'
[ [ "us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e", "us-east-1f" ] ]
지정된 생성 날짜 이후 스냅샷을 표시하는 방법
다음 예제에서는 출력에 사용 가능한 필드를 몇 개만 포함하여 지정된 날짜 이후에 생성된 모든 스냅샷을 나열하는 방법을 보여줍니다.
$
aws ec2 describe-snapshots --owner self \ --output json \ --query 'Snapshots[?StartTime>=`2018-02-07`].{Id:SnapshotId,VId:VolumeId,Size:VolumeSize}'
[ { "id": "snap-0effb42b7a1b2c3d4", "vid": "vol-0be9bb0bf12345678", "Size": 8 } ]
가장 최근 버전을 표시하려면 AMIs
다음 예제는 가장 최근에 생성한 Amazon Machine Images (AMIs) 5개 목록을 가장 최근 것부터 가장 오래된 것까지 정렬하여 나열합니다.
$
aws ec2 describe-images \ --owners self \ --query 'reverse(sort_by(Images,&CreationDate))[:5].{id:ImageId,date:CreationDate}'
[ { "id": "ami-0a1b2c3d4e5f60001", "date": "2018-11-28T17:16:38.000Z" }, { "id": "ami-0a1b2c3d4e5f60002", "date": "2018-09-15T13:51:22.000Z" }, { "id": "ami-0a1b2c3d4e5f60003", "date": "2018-08-19T10:22:45.000Z" }, { "id": "ami-0a1b2c3d4e5f60004", "date": "2018-05-03T12:04:02.000Z" }, { "id": "ami-0a1b2c3d4e5f60005", "date": "2017-12-13T17:16:38.000Z" } ]
비정상 Auto Scaling 인스턴스를 표시하려면
다음 예제에서는 지정된 AutoScaling 그룹의 비정상 인스턴스에 대한 InstanceId
만 보여줍니다.
$
aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-name
My-AutoScaling-Group-Name
\ --output text \ --query 'AutoScalingGroups[*].Instances[?HealthStatus==`Unhealthy`].InstanceId'
지정된 태그가 있는 볼륨을 포함하는 방법
다음 예제에서는 test
태그가 있는 모든 인스턴스에 대해 설명합니다. 볼륨에 연결된 test
옆에 또 다른 태그가 있으면, 볼륨은 여전히 결과에 반환됩니다.
아래 표현식은 test
태그가 있는 모든 태그를 배열에 반환합니다. test
태그가 아닌 모든 태그에는 null
값이 포함됩니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
지정된 태그가 있는 볼륨을 제외하는 방법
다음 예제에서는 test
태그가 없는 모든 인스턴스에 대해 설명합니다. 볼륨에 여러 태그가 있을 수 있으므로 단순 ?Value != `test`
표현식을 사용하면 볼륨을 제외하지 않습니다. 볼륨에 연결된 test
옆에 또 다른 태그가 있으면, 볼륨은 여전히 결과에 반환됩니다.
test
태그가 있는 모든 볼륨을 제외하려면 아래 표현식으로 시작하여 test
태그가 있는 모든 태그를 배열에 반환합니다. test
태그가 아닌 모든 태그에는 null
값이 포함됩니다.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
그런 다음 test
함수를 사용하여 모든 양의 not_null
결과를 필터링합니다.
$
aws ec2 describe-volumes \ --query 'Volumes[!not_null(Tags[?Value == `test`].Value)]'
결과를 파이핑하여 결과를 병합하면 다음 쿼리가 생성됩니다.
$
aws ec2 describe-volumes \ --query 'Volumes[!not_null(Tags[?Value == `test`].Value)] | []'
서버 측 필터링과 클라이언트 측 필터링 결합
서버 측 필터링과 클라이언트 측 필터링을 함께 사용할 수 있습니다. 서버 측 필터링이 먼저 완료되어, --query
매개 변수가 필터링하는 데이터를 클라이언트로 보냅니다. 대규모 데이터 세트를 사용하는 경우 서버 측 필터링을 먼저 사용하면 클라이언트 측 필터링이 제공하는 강력한 사용자 지정을 유지하면서 각 AWS CLI 호출에 대해 클라이언트로 전송되는 데이터 양을 줄일 수 있습니다.
다음 예제는 서버측 필터링과 클라이언트측 필터링을 모두 사용하여 Amazon EC2 볼륨을 나열합니다. 이 서비스는 us-west-2a
가용 영역에서 연결된 모든 볼륨의 목록을 필터링합니다. --query
파라미터는 또한 출력을 50보다 큰 Size
값을 가진 볼륨으로만 제한하며 사용자 정의 이름으로 지정된 필드만 표시합니다.
$
aws ec2 describe-volumes \ --filters "Name=availability-zone,Values=us-west-2a" "Name=status,Values=attached" \ --query 'Volumes[?Size > `50`].{Id:VolumeId,Size:Size,Type:VolumeType}'
[ { "Id": "vol-0be9bb0bf12345678", "Size": 80, "VolumeType": "gp2" } ]
다음 예제에서는 여러 기준을 충족하는 이미지의 목록을 가져옵니다. 그런 다음 --query
파라미터를 사용하여 CreationDate
를 기준으로 출력을 정렬하고 가장 최근 항목만 선택합니다. 마지막으로 해당 이미지의 ImageId
를 표시합니다.
$
aws ec2 describe-images \ --owners amazon \ --filters "Name=name,Values=amzn*gp2" "Name=virtualization-type,Values=hvm" "Name=root-device-type,Values=ebs" \ --query "sort_by(Images, &CreationDate)[-1].ImageId" \ --output text
ami-00ced3122871a4921
다음 예제는 목록에 있는 볼륨 수를 세는 length
데 사용하여 1000개가 IOPS 넘는 사용 가능한 볼륨 수를 표시합니다.
$
aws ec2 describe-volumes \ --filters "Name=status,Values=available" \ --query 'length(Volumes[?Iops > `1000`])'
3
추가 리소스
- JMESPath터미널
-
JMESPath터미널은 클라이언트 측 필터링에 사용되는 JMESPath 표현식을 실험하기 위한 대화형 터미널 명령입니다.
jpterm
명령을 사용하면 사용자가 입력할 때 터미널에 즉시 쿼리 결과가 표시됩니다. AWS CLI 출력을 터미널로 직접 파이프하여 고급 쿼리 실험이 가능합니다.다음 예제는 파이프를 터미널에 직접
aws ec2 describe-volumes
출력합니다. JMESPath$
aws ec2 describe-volumes | jpterm
JMESPath터미널 및 설치 지침에 대한 자세한 내용은 JMESPathTerminal
on을 참조하십시오 GitHub. - jq 유틸리티
-
jq
유틸리티는 클라이언트 측의 출력을 사용자가 원하는 출력 형식으로 변환하는 방법을 제공합니다. 설치 지침에 대한 자세한jq
내용 및 내용은 jqon을 GitHub참조하십시오.