Dokumentasi ini AWS CLI hanya untuk Versi 1. Untuk dokumentasi yang terkait dengan Versi 2 AWS CLI, lihat Panduan Pengguna Versi 2.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Output penyaringan di AWS CLI
The AWS Command Line Interface (AWS CLI) memiliki penyaringan sisi server dan sisi klien yang dapat Anda gunakan secara individual atau bersama-sama untuk memfilter output Anda. AWS CLI Pemfilteran sisi server diproses terlebih dahulu dan mengembalikan output Anda untuk pemfilteran sisi klien.
-
Pemfilteran sisi server didukung olehAPI, dan Anda biasanya menerapkannya dengan parameter.
--filter
Layanan hanya mengembalikan hasil yang cocok yang dapat mempercepat waktu HTTP respons untuk kumpulan data besar. -
Pemfilteran sisi klien didukung oleh AWS CLI klien menggunakan parameter.
--query
Parameter ini memiliki kemampuan yang mungkin tidak dimiliki oleh penyaringan sisi server.
Topik
Pemfilteran sisi server
Pemfilteran sisi server di AWS CLI disediakan oleh layanan. AWS API AWS Layanan hanya mengembalikan catatan dalam HTTP respons yang cocok dengan filter Anda, yang dapat mempercepat waktu HTTP respons untuk kumpulan data besar. Karena pemfilteran sisi server ditentukan oleh layananAPI, nama dan fungsi parameter bervariasi antar layanan. Beberapa nama parameter umum yang digunakan untuk penyaringan adalah:
-
--filters
https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html -
Nama dimulai dengan kata
filter
, misalnya--filter-expression
untukaws dynamodb scan
perintah.
Penyaringan sisi klien
AWS CLI Ini menyediakan kemampuan penyaringan sisi klien JSON berbasis bawaan dengan parameter. --query
--query
Parameter adalah alat yang ampuh yang dapat Anda gunakan untuk menyesuaikan konten dan gaya output Anda. --query
Parameter mengambil HTTP respons yang kembali dari server dan memfilter hasil sebelum menampilkannya. Karena seluruh HTTP respons dikirim ke klien sebelum pemfilteran, pemfilteran sisi klien bisa lebih lambat daripada penyaringan sisi server untuk kumpulan data besar.
Query menggunakan JMESPathsintaks
penting
Jenis keluaran yang Anda tentukan mengubah cara --query
opsi beroperasi:
-
Jika Anda menentukan
--output text
, output diberi paginasi sebelum--query
filter diterapkan, dan AWS CLI menjalankan kueri sekali pada setiap halaman output. Karena ini, kueri menyertakan elemen pencocokan pertama pada setiap halaman yang dapat menghasilkan output tambahan yang tidak terduga. Untuk memfilter output tambahan, Anda dapat menggunakan alat baris perintah lainnya sepertihead
atautail
. -
Jika Anda menentukan
--output json
output sepenuhnya diproses sebagai struktur asli tunggal sebelum--query
filter diterapkan. AWS CLI Menjalankan kueri hanya sekali terhadap seluruh struktur, menghasilkan hasil yang difilter yang kemudian dikeluarkan.
Topik penyaringan sisi klien
Sebelum Anda mulai
Saat menggunakan ekspresi filter yang digunakan dalam contoh ini, pastikan untuk menggunakan aturan kutipan yang benar untuk shell terminal Anda. Untuk informasi selengkapnya, lihat Menggunakan tanda kutip dan literal dengan string di AWS CLI.
JSONOutput berikut menunjukkan contoh apa yang dapat dihasilkan oleh --query
parameter. Outputnya menjelaskan tiga EBS volume Amazon yang dilampirkan ke EC2 instance Amazon yang terpisah.
$
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 } ] }
Pengidentifikasi
Identifier adalah label untuk nilai output. Saat membuat filter, Anda menggunakan pengidentifikasi untuk mempersempit hasil kueri Anda. Dalam contoh output berikut, semua pengidentifikasi sepertiVolumes
,AvailabilityZone
, dan AttachTime
disorot.
$
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 } ] }
Untuk informasi selengkapnya, lihat Pengidentifikasi
Memilih dari daftar
Daftar atau array adalah pengidentifikasi yang diikuti oleh braket persegi "[
" seperti Volumes
dan Attachments
di. Sebelum Anda mulai
Sintaksis
<listName>[ ]
Untuk memfilter semua output dari array, Anda dapat menggunakan notasi wildcard. Ekspresi wildcard*
notasi.
Contoh berikut menanyakan semua Volumes
konten.
$
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 } ]
Untuk melihat volume tertentu dalam array dengan indeks, Anda memanggil indeks array. Misalnya, item pertama dalam Volumes
array memiliki indeks 0, menghasilkan Volumes[0]
kueri. Untuk informasi selengkapnya tentang indeks array, lihat ekspresi indeks
$
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 }
Untuk melihat rentang volume tertentu berdasarkan indeks, gunakan slice
dengan sintaks berikut, di mana awal adalah indeks array awal, stop adalah indeks tempat filter berhenti memproses, dan langkahnya adalah interval lewati.
Sintaksis
<arrayName>[<start>:<stop>:<step>]
Jika salah satu dari ini dihilangkan dari ekspresi irisan, mereka menggunakan nilai default berikut:
-
Mulai — Indeks pertama dalam daftar, 0.
-
Stop — Indeks terakhir dalam daftar.
-
Langkah - Tidak ada langkah melompati, di mana nilainya adalah 1.
Untuk mengembalikan hanya dua volume pertama, Anda menggunakan nilai awal 0, nilai stop 2, dan nilai langkah 1 seperti yang ditunjukkan pada contoh berikut.
$
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 } ]
Karena contoh ini berisi nilai default, Anda dapat mempersingkat irisan dari Volumes[0:2:1]
keVolumes[:2]
.
Contoh berikut menghilangkan nilai default dan mengembalikan setiap dua volume di seluruh array.
$
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 } ]
Langkah-langkah juga dapat menggunakan angka negatif untuk memfilter dalam urutan terbalik dari array seperti yang ditunjukkan pada contoh berikut.
$
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 } ]
Untuk informasi lebih lanjut, lihat Slices
Memfilter data bersarang
Untuk mempersempit pemfilteran Volumes[*]
untuk nilai bersarang, Anda menggunakan subexpressions dengan menambahkan periode dan kriteria filter Anda.
Sintaksis
<expression>.<expression>
Contoh berikut menunjukkan semua Attachments
informasi untuk semua volume.
$
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" } ] ]
Untuk memfilter lebih jauh ke dalam nilai bersarang, tambahkan ekspresi untuk setiap indentifier bersarang. Contoh berikut mencantumkan State
untuk semuaVolumes
.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[*].State'
[ [ "attached" ], [ "attached" ], [ "attached" ] ]
Hasil perataan
Untuk informasi lebih lanjut, lihat SubExpressions
Anda dapat meratakan hasilnya Volumes[*].Attachments[*].State
dengan menghapus notasi wildcard yang menghasilkan kueri. Volumes[*].Attachments[].State
Meratakan sering berguna untuk meningkatkan keterbacaan hasil.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].State'
[ "attached", "attached", "attached" ]
Untuk informasi lebih lanjut, lihat Flatten
Pemfilteran untuk nilai tertentu
Untuk memfilter nilai tertentu dalam daftar, Anda menggunakan ekspresi filter seperti yang ditunjukkan dalam sintaks berikut.
Sintaksis
? <expression> <comparator> <expression>]
Komparator ekspresi meliputi==
,!=
,<
,, <=
>
, dan>=
. Contoh filter berikut VolumeIds
untuk semua Volumes
dalam file Attached
State
.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId'
[ [ "vol-e11a5288" ], [ "vol-2e410a47" ], [ "vol-a1b3c7nd" ] ]
Ini kemudian dapat diratakan sehingga menghasilkan contoh berikut.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[?State==`attached`].VolumeId[]'
[ "vol-e11a5288", "vol-2e410a47", "vol-a1b3c7nd" ]
Berikut contoh filter untuk semua VolumeIds
Volumes
yang memiliki ukuran kurang dari 20.
$
aws ec2 describe-volumes \ --query 'Volumes[?Size < `20`].VolumeId'
[ "vol-2e410a47", "vol-a1b3c7nd" ]
Untuk informasi selengkapnya, lihat Menyaring Ekspresi
Ekspresi perpipaan
Anda dapat menyalurkan hasil filter ke daftar baru, dan kemudian memfilter hasilnya dengan ekspresi lain menggunakan sintaks berikut:
Sintaksis
<expression> | <expression>]
Contoh berikut mengambil hasil filter Volumes[*].Attachments[].InstanceId
ekspresi dan output hasil pertama dalam array.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId | [0]'
"i-a071c394"
Contoh ini melakukan ini dengan terlebih dahulu membuat array dari ekspresi berikut.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Attachments[].InstanceId'
"i-a071c394", "i-4b41a37c", "i-1jd73kv8"
Dan kemudian mengembalikan elemen pertama dalam array itu.
"i-a071c394"
Untuk informasi lebih lanjut, lihat Ekspresi Pipa
Memfilter untuk beberapa nilai pengenal
Untuk memfilter beberapa pengidentifikasi, Anda menggunakan daftar multiselect dengan menggunakan sintaks berikut:
Sintaksis
<listName>[].[<expression>, <expression>]
Dalam contoh berikut, VolumeId
dan VolumeType
disaring dalam Volumes
daftar yang menghasilkan ekspresi berikut.
$
aws ec2 describe-volumes \ --query 'Volumes[].[VolumeId, VolumeType]'
[ [ "vol-e11a5288", "standard" ], [ "vol-2e410a47", "standard" ], [ "vol-a1b3c7nd", "standard" ] ]
Untuk menambahkan data bersarang ke daftar, Anda menambahkan daftar multipilih lainnya. Contoh berikut memperluas contoh sebelumnya dengan juga memfilter untuk InstanceId
dan State
dalam daftar bersarangAttachments
. Ini menghasilkan ekspresi berikut.
$
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" ] ] ] ]
Agar lebih mudah dibaca, ratakan ekspresi seperti yang ditunjukkan pada contoh berikut.
$
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" ] ]
Untuk informasi selengkapnya, lihat Daftar Multiselect
Menambahkan label ke nilai pengenal
Untuk membuat output ini lebih mudah dibaca, gunakan hash multiselect dengan sintaks berikut.
Sintaksis
<listName>[].{<label>: <expression>, <label>: <expression>}
Label pengenal Anda tidak harus sama dengan nama pengenal. Contoh berikut menggunakan label VolumeType
untuk VolumeType
nilai-nilai.
$
aws ec2 describe-volumes \ --query 'Volumes[].{VolumeType: VolumeType}'
[ { "VolumeType": "standard", }, { "VolumeType": "standard", }, { "VolumeType": "standard", } ]
Untuk mempermudah, contoh berikut menyimpan nama pengenal untuk setiap label dan menampilkanVolumeId
,, VolumeType
InstanceId
, dan State
untuk semua volume:
$
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" } ]
Untuk informasi selengkapnya, lihat hash Multiselect
Fungsi
JMESPathSintaks berisi banyak fungsi yang dapat Anda gunakan untuk kueri Anda. Untuk informasi tentang JMESPath fungsi, lihat Fungsi bawaan
Untuk menunjukkan bagaimana Anda dapat menggabungkan fungsi ke dalam kueri Anda, contoh berikut menggunakan sort_by
fungsi tersebut. sort_by
Fungsi mengurutkan array menggunakan ekspresi sebagai kunci sortir menggunakan sintaks berikut:
Sintaksis
sort_by(<listName>, <sort expression>)[].<expression>
Contoh berikut menggunakan contoh hash multiselect sebelumnya dan mengurutkan output berdasarkan. 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" } ]
Untuk informasi selengkapnya, lihat sort_by di situs web
--query
Contoh lanjutan
Untuk mengekstrak informasi dari item tertentu
Contoh berikut menggunakan --query
parameter untuk menemukan item tertentu dalam daftar dan kemudian mengekstrak informasi dari item tersebut. Contoh ini mencantumkan semua yang AvailabilityZones
terkait dengan titik akhir layanan yang ditentukan. Ini mengekstrak item dari ServiceDetails
daftar yang telah ditentukanServiceName
, lalu mengeluarkan AvailabilityZones
bidang dari item yang dipilih.
$
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" ] ]
Untuk menampilkan snapshot setelah tanggal pembuatan yang ditentukan
Contoh berikut menunjukkan cara membuat daftar semua snapshot Anda yang dibuat setelah tanggal tertentu, termasuk hanya beberapa bidang yang tersedia dalam output.
$
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 } ]
Untuk menunjukkan yang terbaru AMIs
Contoh berikut mencantumkan lima Gambar Mesin Amazon terbaru (AMIs) yang Anda buat, diurutkan dari yang terbaru ke yang paling lama.
$
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" } ]
Untuk menampilkan instans Auto Scaling yang tidak sehat
Contoh berikut hanya menampilkan InstanceId
contoh yang tidak sehat dalam grup Auto Scaling yang ditentukan.
$
aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-name
My-AutoScaling-Group-Name
\ --output text \ --query 'AutoScalingGroups[*].Instances[?HealthStatus==`Unhealthy`].InstanceId'
Untuk menyertakan volume dengan tag yang ditentukan
Contoh berikut menjelaskan semua contoh dengan test
tag. Selama ada tag lain di samping yang test
melekat pada volume, volume masih dikembalikan dalam hasil.
Ekspresi di bawah ini untuk mengembalikan semua test
tag dengan tag dalam array. Setiap tag yang bukan test
tag mengandung null
nilai.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
Untuk mengecualikan volume dengan tag yang ditentukan
Contoh berikut menjelaskan semua contoh tanpa test
tag. Menggunakan ?Value != `test`
ekspresi sederhana tidak berfungsi untuk mengecualikan volume karena volume dapat memiliki beberapa tag. Selama ada tag lain di samping yang test
melekat pada volume, volume masih dikembalikan dalam hasil.
Untuk mengecualikan semua volume dengan test
tag, mulailah dengan ekspresi di bawah ini untuk mengembalikan semua tag dengan test
tag dalam array. Setiap tag yang bukan test
tag mengandung null
nilai.
$
aws ec2 describe-volumes \ --query 'Volumes[*].Tags[?Value == `test`]'
Kemudian saring semua test
hasil positif menggunakan not_null
fungsi tersebut.
$
aws ec2 describe-volumes \ --query 'Volumes[!not_null(Tags[?Value == `test`].Value)]'
Pipa hasil untuk meratakan hasil yang menghasilkan kueri berikut.
$
aws ec2 describe-volumes \ --query 'Volumes[!not_null(Tags[?Value == `test`].Value)] | []'
Menggabungkan penyaringan sisi server dan sisi klien
Anda dapat menggunakan penyaringan sisi server dan sisi klien secara bersamaan. Pemfilteran sisi server diselesaikan terlebih dahulu, yang mengirimkan data ke klien yang kemudian difilter oleh parameter. --query
Jika Anda menggunakan kumpulan data besar, menggunakan pemfilteran sisi server terlebih dahulu dapat menurunkan jumlah data yang dikirim ke klien untuk setiap AWS CLI panggilan, sambil tetap menjaga kustomisasi kuat yang disediakan oleh penyaringan sisi klien.
Contoh berikut mencantumkan EC2 volume Amazon menggunakan pemfilteran sisi server dan sisi klien. Layanan memfilter daftar semua volume terlampir di us-west-2a
Availability Zone. --query
Parameter selanjutnya membatasi output hanya volume dengan Size
nilai yang lebih besar dari 50, dan hanya menampilkan bidang tertentu dengan nama yang ditentukan pengguna.
$
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" } ]
Contoh berikut mengambil daftar gambar yang memenuhi beberapa kriteria. Kemudian menggunakan --query
parameter untuk mengurutkan output denganCreationDate
, memilih hanya yang terbaru. Akhirnya, ini menampilkan gambar ImageId
yang satu itu.
$
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
Contoh berikut menampilkan jumlah volume yang tersedia yang lebih dari 1000 IOPS dengan menggunakan length
untuk menghitung berapa banyak dalam daftar.
$
aws ec2 describe-volumes \ --filters "Name=status,Values=available" \ --query 'length(Volumes[?Iops > `1000`])'
3
Sumber daya tambahan
- JMESPathTerminal
-
JMESPathTerminal adalah perintah terminal interaktif untuk bereksperimen dengan JMESPath ekspresi yang digunakan untuk pemfilteran sisi klien. Menggunakan
jpterm
perintah, terminal menampilkan hasil kueri langsung saat Anda mengetik. Anda dapat langsung AWS CLI menyalurkan output ke terminal, memungkinkan eksperimen kueri lanjutan.Berikut contoh pipa
aws ec2 describe-volumes
output langsung ke JMESPath Terminal.$
aws ec2 describe-volumes | jpterm
Untuk informasi selengkapnya tentang JMESPath Terminal dan petunjuk penginstalan, lihat JMESPathTerminal
aktif GitHub. - utilitas jq
-
jq
Utilitas ini memberi Anda cara untuk mengubah output Anda di sisi klien ke format output yang Anda inginkan. Untuk informasi lebih lanjut tentangjq
dan petunjuk pemasangan, lihat jqon GitHub.