Output penyaringan di AWS CLI - AWS Command Line Interface

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.

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:

Penyaringan sisi klien

AWS CLI Ini menyediakan kemampuan penyaringan sisi klien JSON berbasis bawaan dengan parameter. --query --queryParameter adalah alat yang ampuh yang dapat Anda gunakan untuk menyesuaikan konten dan gaya output Anda. --queryParameter 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 untuk membuat ekspresi untuk memfilter output Anda. Untuk mempelajari JMESPath sintaks, lihat Tutorial di JMESPathsitus web.

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 seperti head 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.

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 di JMESPathsitus web.

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 adalah ekspresi yang digunakan untuk mengembalikan elemen menggunakan * 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 di JMESPathsitus web.

$ 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 di JMESPathsitus web.

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 SubExpressionsdi JMESPathsitus web.

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 di JMESPathsitus web.

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 AttachedState.

$ 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 di JMESPathsitus web.

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 di JMESPathsitus web.

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 di JMESPathsitus web.

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,, VolumeTypeInstanceId, 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 di situs web. JMESPath

Fungsi

JMESPathSintaks berisi banyak fungsi yang dapat Anda gunakan untuk kueri Anda. Untuk informasi tentang JMESPath fungsi, lihat Fungsi bawaan di JMESPathsitus web.

Untuk menunjukkan bagaimana Anda dapat menggabungkan fungsi ke dalam kueri Anda, contoh berikut menggunakan sort_by fungsi tersebut. sort_byFungsi 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. JMESPath

--queryContoh 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. --queryParameter 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

jqUtilitas ini memberi Anda cara untuk mengubah output Anda di sisi klien ke format output yang Anda inginkan. Untuk informasi lebih lanjut tentang jq dan petunjuk pemasangan, lihat jq on GitHub.