

**Dokumentasi ini AWS CLI hanya untuk Versi 1.**

Kami mengumumkan yang akan datang end-of-support untuk AWS CLI versi 1. Kami menyarankan Anda bermigrasi ke AWS CLI versi 2. Untuk tanggal, detail tambahan, dan informasi tentang cara bermigrasi, lihat [pengumuman](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/). Untuk dokumentasi yang terkait dengan Versi 2 AWS CLI, lihat [Panduan Pengguna Versi 2](https://docs.aws.amazon.com/cli/latest/userguide/).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengontrol output perintah di AWS CLI
<a name="cli-usage-output"></a>

Bagian ini menjelaskan berbagai cara untuk mengontrol output dari AWS Command Line Interface (AWS CLI). Menyesuaikan AWS CLI output di terminal Anda dapat meningkatkan keterbacaan, merampingkan otomatisasi skrip, dan memberikan navigasi yang lebih mudah melalui kumpulan data yang lebih besar.

 AWS CLI Mendukung beberapa [format output](cli-usage-output-format.md), termasuk [`json`](cli-usage-output-format.md#json-output), [`text`](cli-usage-output-format.md#text-output), dan [`table`](cli-usage-output-format.md#table-output). Beberapa layanan memiliki [pagination](cli-usage-pagination.md) sisi server untuk data mereka pagination tambahan.

Terakhir, AWS CLI memiliki [penyaringan sisi server dan sisi klien yang dapat Anda gunakan secara individual atau bersama-sama untuk memfilter](cli-usage-filter.md) output Anda. AWS CLI 

**Topics**
+ [Output sensitif](#cli-usage-output-sensitive)
+ [Opsi keluaran sisi server vs sisi klien](#cli-usage-output-server-client)
+ [Mengatur format output di AWS CLI](cli-usage-output-format.md)
+ [Menggunakan opsi pagination di AWS CLI](cli-usage-pagination.md)
+ [Output penyaringan di AWS CLI](cli-usage-filter.md)

## Output sensitif
<a name="cli-usage-output-sensitive"></a>

Beberapa operasi AWS CLI mungkin mengembalikan informasi yang dapat dianggap sensitif, termasuk informasi dari variabel lingkungan. Paparan informasi ini mungkin mewakili risiko keamanan dalam skenario tertentu; misalnya, informasi dapat dimasukkan dalam log integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD). Oleh karena itu penting bahwa Anda meninjau ketika Anda memasukkan output tersebut sebagai bagian dari log Anda, dan menekan output ketika tidak diperlukan.

Untuk informasi tambahan tentang melindungi data sensitif, lihat[Perlindungan data di AWS CLI](data-protection.md).

Pertimbangkan praktik terbaik berikut:
+ Pertimbangkan untuk mengambil rahasia Anda secara terprogram dari toko rahasia, seperti. AWS Secrets Manager
+ Tinjau konten log build Anda untuk memastikan bahwa log tersebut tidak berisi informasi sensitif. Pertimbangkan pendekatan seperti perpipaan ke `/dev/null` atau menangkap output sebagai bash atau PowerShell variabel untuk menekan output perintah. 

  Berikut ini adalah contoh bash untuk mengarahkan output, tetapi bukan kesalahan, ke: `/dev/null`

  ```
  $ aws s3 ls > /dev/null
  ```

  Untuk spesifik tentang menekan output untuk terminal Anda, lihat dokumentasi pengguna terminal yang Anda gunakan.
+ Pertimbangkan akses log Anda dan cakupan akses yang tepat untuk kasus penggunaan Anda.

## Opsi keluaran sisi server vs sisi klien
<a name="cli-usage-output-server-client"></a>

Ini AWS CLI memiliki penyaringan sisi [server dan sisi klien yang dapat Anda gunakan secara individual atau bersama-sama untuk memfilter](cli-usage-filter.md) output Anda. AWS CLI Pemfilteran sisi server diproses terlebih dahulu dan mengembalikan output Anda untuk pemfilteran sisi klien. Pemfilteran sisi server didukung oleh API layanan. Pemfilteran sisi klien didukung oleh AWS CLI klien menggunakan parameter. `--query`

Opsi keluaran **sisi server** adalah fitur yang didukung langsung oleh API. Layanan AWS Setiap data yang disaring atau paged out tidak dikirim ke klien, yang dapat mempercepat waktu respons HTTP dan meningkatkan bandwidth untuk kumpulan data yang lebih besar.

Opsi keluaran **sisi klien** adalah fitur yang dibuat oleh. AWS CLI Semua data dikirim ke klien, kemudian AWS CLI filter atau halaman konten ditampilkan. Operasi sisi klien tidak menghemat kecepatan atau bandwidth untuk kumpulan data yang lebih besar.

Ketika opsi sisi server dan sisi klien digunakan bersama-sama, operasi sisi server diselesaikan terlebih dahulu dan kemudian dikirim ke klien untuk operasi sisi klien. Ini menggunakan potensi penghematan kecepatan dan bandwidth dari opsi sisi server, sambil menggunakan AWS CLI fitur tambahan untuk mendapatkan output yang Anda inginkan.

# Mengatur format output di AWS CLI
<a name="cli-usage-output-format"></a>

Topik ini menjelaskan format keluaran yang berbeda untuk AWS Command Line Interface (AWS CLI). AWS CLI Mendukung format output berikut:
+ **[`json`](#json-output)**— Output diformat sebagai string [JSON](https://json.org/).
+ **[`text`](#text-output)**- Output diformat sebagai beberapa baris nilai string yang dipisahkan tab. Ini dapat berguna untuk meneruskan output ke prosesor teks, seperti`grep`,`sed`, atau`awk`.
+ **[`table`](#table-output)**— Output diformat sebagai tabel menggunakan karakter \$1\$1- untuk membentuk batas sel. Ini biasanya menyajikan informasi dalam format “ramah manusia” yang jauh lebih mudah dibaca daripada yang lain, tetapi tidak berguna secara terprogram.

## Cara memilih format output
<a name="cli-usage-output-format-how"></a>

Seperti yang dijelaskan dalam topik [konfigurasi](cli-chap-configure.md), Anda dapat menentukan format output dalam tiga cara:
+ **Menggunakan `output` opsi dalam profil bernama dalam `config` file** - Contoh berikut menetapkan format output default ke`text`.

  ```
  [default]
  output=text
  ```
+ **Menggunakan variabel `AWS_DEFAULT_OUTPUT` lingkungan** - Output berikut menetapkan format `table` untuk perintah dalam sesi baris perintah ini sampai variabel diubah atau sesi berakhir. Menggunakan variabel lingkungan ini mengesampingkan nilai apa pun yang ditetapkan dalam file. `config`

  ```
  $ export AWS_DEFAULT_OUTPUT="table"
  ```
+ **Menggunakan `--output` opsi pada baris perintah** - Contoh berikut menetapkan output dari hanya satu perintah ini`json`. Menggunakan opsi ini pada perintah mengesampingkan variabel lingkungan yang saat ini ditetapkan atau nilai dalam file. `config`

  ```
  $ aws swf list-domains --registration-status REGISTERED --output json
  ```

**penting**  
Jenis output 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` atau`tail`.
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.

## Format keluaran JSON
<a name="json-output"></a>

[JSON](https://json.org) adalah format output default dari file. AWS CLI Sebagian besar bahasa pemrograman dapat dengan mudah memecahkan kode string JSON menggunakan fungsi bawaan atau dengan perpustakaan yang tersedia untuk umum. Anda dapat menggabungkan output JSON dengan [opsi --query](cli-usage-filter.md) dengan cara yang ampuh untuk memfilter dan memformat output berformat AWS CLI JSON. 

Untuk pemfilteran lebih lanjut yang mungkin tidak dapat Anda lakukan`--query`, Anda dapat mempertimbangkan`jq`, prosesor JSON baris perintah. Anda dapat mengunduhnya dan menemukan tutorial resminya di [http://stedolan.github.io/jq/](http://stedolan.github.io/jq/).

Berikut ini adalah contoh output 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"
        }
    ]
}
```

## Format keluaran teks
<a name="text-output"></a>

`text`Format mengatur AWS CLI output ke dalam baris yang dibatasi tab. Ini bekerja dengan baik dengan alat teks Unix tradisional seperti`grep`,`sed`, dan`awk`, dan pemrosesan teks yang dilakukan oleh PowerShell. 

Format `text` output mengikuti struktur dasar yang ditunjukkan di bawah ini. Kolom diurutkan menurut abjad dengan nama kunci yang sesuai dari objek JSON yang mendasarinya.

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

Berikut ini adalah contoh `text` output. Setiap bidang adalah tab yang terpisah dari yang lain, dengan tab tambahan di mana ada bidang kosong.

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

Kolom keempat adalah `PasswordLastUsed` bidang, dan kosong untuk dua entri terakhir karena pengguna tersebut tidak pernah masuk ke Konsol Manajemen AWS.

**penting**  
*Kami sangat menyarankan bahwa jika Anda menentukan `text` output, Anda juga selalu menggunakan [`--query`](cli-usage-filter.md)opsi untuk memastikan perilaku yang konsisten*.   
Ini karena format teks menurut abjad mengurutkan kolom keluaran dengan nama kunci objek JSON yang mendasari yang dikembalikan oleh AWS layanan, dan sumber daya serupa mungkin tidak memiliki nama kunci yang sama. Misalnya, representasi JSON dari instans Amazon EC2 berbasis Linux mungkin memiliki elemen yang tidak ada dalam representasi JSON dari instance berbasis Windows, atau sebaliknya. Selain itu, sumber daya mungkin memiliki elemen nilai kunci yang ditambahkan atau dihapus di pembaruan masa depan, mengubah urutan kolom. Di sinilah `--query` menambah fungsionalitas `text` output untuk memberi Anda kontrol penuh atas format output.   
Dalam contoh berikut, perintah menentukan elemen mana yang akan ditampilkan dan *mendefinisikan urutan* kolom dengan notasi daftar. `[key1, key2, ...]` Ini memberi Anda keyakinan penuh bahwa nilai kunci yang benar selalu ditampilkan di kolom yang diharapkan. Akhirnya, perhatikan bagaimana AWS CLI output `None` sebagai nilai untuk kunci yang tidak ada.  

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

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan `grep` dan `awk` dengan `text` output dari `aws ec2 describe-instances` perintah. Perintah pertama menampilkan Availability Zone, status saat ini, dan ID instance dari setiap instance dalam `text` output. Perintah kedua memproses output yang hanya menampilkan instance IDs dari semua instance yang berjalan di `us-west-2a` Availability Zone.

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

Contoh berikut melangkah lebih jauh dan menunjukkan tidak hanya cara memfilter output, tetapi bagaimana menggunakan output itu untuk mengotomatiskan jenis instance yang berubah untuk setiap instance yang dihentikan.

```
$ 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`Outputnya juga bisa berguna di PowerShell. Karena kolom dalam `text` output dibatasi tab, Anda dapat dengan mudah membagi output menjadi array dengan menggunakan PowerShell pembatas. ``t` Perintah berikut menampilkan nilai kolom ketiga (`InstanceId`) jika kolom pertama (`AvailabilityZone`) cocok dengan string`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
```

Perhatikan bahwa meskipun contoh sebelumnya menunjukkan cara menggunakan `--query` parameter untuk mengurai objek JSON yang mendasarinya dan mengeluarkan kolom yang diinginkan, PowerShell memiliki kemampuannya sendiri untuk menangani JSON, jika kompatibilitas lintas platform tidak menjadi perhatian. Alih-alih menangani output sebagai teks, seperti yang dibutuhkan kebanyakan shell perintah, PowerShell memungkinkan Anda menggunakan `ConvertFrom-JSON` cmdlet untuk menghasilkan objek yang terstruktur secara hierarkis. Anda kemudian dapat langsung mengakses anggota yang Anda inginkan dari objek itu.

```
(aws ec2 describe-instances --output json | ConvertFrom-Json).Reservations.Instances.InstanceId
```

**Tip**  
Jika Anda mengeluarkan teks, dan memfilter output ke satu bidang menggunakan `--query` parameter, outputnya adalah satu baris nilai yang dipisahkan tab. Untuk mendapatkan setiap nilai ke baris terpisah, Anda dapat menempatkan bidang output dalam tanda kurung, seperti yang ditunjukkan pada contoh berikut.  
Tab dipisahkan, output satu baris:  

```
$ aws iam list-groups-for-user --user-name susan  --output text --query "Groups[].GroupName"
```

```
HRDepartment    Developers      SpreadsheetUsers  LocalAdmins
```
Setiap nilai pada barisnya sendiri dengan memasukkan `[GroupName]` tanda kurung:  

```
$ aws iam list-groups-for-user --user-name susan  --output text --query "Groups[].[GroupName]"
```

```
HRDepartment
Developers
SpreadsheetUsers
LocalAdmins
```

## Format keluaran tabel
<a name="table-output"></a>

`table`Format ini menghasilkan representasi yang dapat dibaca manusia dari AWS CLI output kompleks dalam bentuk tabel.

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

Anda dapat menggabungkan `--query` opsi dengan `table` format untuk menampilkan satu set elemen yang telah dipilih sebelumnya dari output mentah. Perhatikan perbedaan output antara notasi kamus dan daftar: pada contoh pertama, nama kolom diurutkan menurut abjad, dan pada contoh kedua, kolom yang tidak disebutkan namanya diurutkan seperti yang ditentukan oleh pengguna. Untuk informasi selengkapnya tentang `--query` opsi, lihat[Output penyaringan di AWS CLI](cli-usage-filter.md).

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

# Menggunakan opsi pagination di AWS CLI
<a name="cli-usage-pagination"></a>

Topik ini menjelaskan berbagai cara untuk melakukan paginasi output dari AWS Command Line Interface (AWS CLI). 

## Pagination sisi server
<a name="cli-usage-pagination-serverside"></a>

Untuk sebagian besar perintah yang menampilkan daftar item yang besar, AWS CLI memiliki beberapa opsi sisi server untuk mengontrol jumlah item yang disertakan dalam output saat AWS CLI memanggil API layanan untuk mengisi daftar. Pagination sisi server di AWS CLI diaktifkan oleh API AWS layanan, oleh karena itu opsi ini hanya berfungsi jika API layanan mengaktifkannya.

**Topics**
+ [--no-paginate](#cli-usage-pagination-nopaginate)
+ [--ukuran halaman](#cli-usage-pagination-pagesize)
+ [--maks-item](#cli-usage-pagination-maxitems)
+ [--starting-token](#cli-usage-pagination-startingtoken)

Secara default, AWS CLI menggunakan ukuran halaman yang ditentukan oleh layanan individu dan mengambil semua item yang tersedia. Misalnya, Amazon S3 memiliki ukuran halaman default 1000. Jika Anda menjalankan `aws s3api list-objects` bucket Amazon S3 yang berisi 3.500 objek, AWS CLI secara otomatis membuat empat panggilan ke Amazon S3, menangani logika pagination khusus layanan untuk Anda di latar belakang dan mengembalikan semua 3.500 objek di output akhir.

Untuk informasi tentang apakah perintah tertentu memiliki pagination sisi server, lihat panduan referensi 2 [panduan AWS CLI referensi](https://docs.aws.amazon.com/cli/v1/reference/).

### Cara menggunakan parameter --no-paginate
<a name="cli-usage-pagination-nopaginate"></a>

`--no-paginate`Opsi ini menonaktifkan token pagination berikut di sisi klien. Saat menggunakan perintah, secara default AWS CLI secara otomatis membuat beberapa panggilan untuk mengembalikan semua hasil yang mungkin untuk membuat pagination. Satu panggilan untuk setiap halaman. Menonaktifkan pagination memiliki AWS CLI satu-satunya panggilan sekali untuk halaman pertama hasil perintah. 

Misalnya, jika Anda menjalankan `aws s3api list-objects` bucket Amazon S3 yang berisi 3.500 objek, AWS CLI satu-satunya yang membuat panggilan pertama ke Amazon S3, hanya mengembalikan 1.000 objek pertama dalam output akhir.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --no-paginate
{
    "Contents": [
...
```

### Cara menggunakan parameter --page-size
<a name="cli-usage-pagination-pagesize"></a>

Jika Anda melihat masalah saat menjalankan perintah daftar pada sejumlah besar sumber daya, ukuran halaman default mungkin terlalu tinggi. Hal ini dapat menyebabkan panggilan ke AWS layanan melebihi waktu maksimum yang diizinkan dan menghasilkan kesalahan “waktu habis”. Anda dapat menggunakan `--page-size` opsi untuk menentukan bahwa AWS CLI permintaan sejumlah kecil item dari setiap panggilan ke AWS layanan. AWS CLI Masih mengambil daftar lengkap, tetapi melakukan lebih banyak panggilan API layanan di latar belakang dan mengambil sejumlah kecil item dengan setiap panggilan. Ini memberi panggilan individu kesempatan yang lebih baik untuk berhasil tanpa batas waktu. Mengubah ukuran halaman tidak memengaruhi output; itu hanya memengaruhi jumlah panggilan API yang perlu dilakukan untuk menghasilkan output.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --page-size 100
{
    "Contents": [
...
```

### Cara menggunakan parameter --max-items
<a name="cli-usage-pagination-maxitems"></a>

Untuk memasukkan lebih sedikit item sekaligus dalam AWS CLI output, gunakan `--max-items` opsi. AWS CLI Masih menangani pagination dengan layanan seperti yang dijelaskan sebelumnya, tetapi hanya mencetak jumlah item pada waktu yang Anda tentukan.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --max-items 100
{
    "NextToken": "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==",
    "Contents": [
...
```

### Cara menggunakan parameter --starting-token
<a name="cli-usage-pagination-startingtoken"></a>

Jika jumlah item output (`--max-items`) lebih sedikit dari jumlah total item yang dikembalikan oleh panggilan API yang mendasarinya, outputnya menyertakan perintah `NextToken` yang dapat Anda teruskan ke perintah berikutnya untuk mengambil set item berikutnya. Contoh berikut menunjukkan bagaimana menggunakan `NextToken` nilai yang dikembalikan oleh contoh sebelumnya, dan memungkinkan Anda untuk mengambil 100 item kedua.

**catatan**  
Parameter `--starting-token` tidak bisa nol atau kosong. Jika perintah sebelumnya tidak mengembalikan `NextToken` nilai, tidak ada lagi item untuk dikembalikan dan Anda tidak perlu memanggil perintah lagi.

```
$ aws s3api list-objects \
    --bucket amzn-s3-demo-bucket \
    --max-items 100 \
    --starting-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==
{
    "Contents": [
...
```

 AWS Layanan yang ditentukan mungkin tidak mengembalikan item dalam urutan yang sama setiap kali Anda menelepon. Jika Anda menentukan nilai yang berbeda untuk `--page-size` dan`--max-items`, Anda bisa mendapatkan hasil yang tidak terduga dengan item yang hilang atau digandakan. Untuk mencegah hal ini, gunakan nomor yang sama untuk `--page-size` dan `--max-items` untuk menyinkronkan AWS CLI pagination dengan pagination dari layanan yang mendasarinya. Anda juga dapat mengambil seluruh daftar dan melakukan operasi paging yang diperlukan secara lokal.

# Output penyaringan di AWS CLI
<a name="cli-usage-filter"></a>

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 oleh API, dan Anda biasanya menerapkannya dengan parameter. `--filter` Layanan hanya mengembalikan hasil yang cocok yang dapat mempercepat waktu respons HTTP 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.

**Topics**
+ [Pemfilteran sisi server](#cli-usage-filter-server-side)
+ [Penyaringan sisi klien](#cli-usage-filter-client-side)
+ [Menggabungkan penyaringan sisi server dan sisi klien](#cli-usage-filter-combining)
+ [Sumber daya tambahan](#cli-usage-filter-resources)

## Pemfilteran sisi server
<a name="cli-usage-filter-server-side"></a>

Pemfilteran sisi server di AWS CLI disediakan oleh API layanan. AWS AWS Layanan hanya mengembalikan catatan dalam respons HTTP yang cocok dengan filter Anda, yang dapat mempercepat waktu respons HTTP untuk kumpulan data besar. Karena pemfilteran sisi server ditentukan oleh API layanan, nama dan fungsi parameter bervariasi antar layanan. Beberapa nama parameter umum yang digunakan untuk penyaringan adalah: 
+ `--filter`seperti [ses ](https://docs.aws.amazon.com/cli/v1/reference/ses/create-receipt-filter.html) dan [ce](https://docs.aws.amazon.com/cli/v1/reference/ce/get-cost-and-usage.html) . 
+ `--filters`[https://docs.aws.amazon.com/cli/v1/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/v1/reference/rds/describe-db-instances.html) 
+ Nama dimulai dengan kata`filter`, misalnya `--filter-expression` untuk [https://docs.aws.amazon.com/cli/v1/reference/dynamodb/scan.html](https://docs.aws.amazon.com/cli/v1/reference/dynamodb/scan.html)perintah.



## Penyaringan sisi klien
<a name="cli-usage-filter-client-side"></a>

 AWS CLI Ini menyediakan kemampuan penyaringan sisi klien berbasis JSON bawaan dengan parameter. `--query` `--query`Parameter adalah alat yang ampuh yang dapat Anda gunakan untuk menyesuaikan konten dan gaya output Anda. `--query`Parameter mengambil respons HTTP yang kembali dari server dan memfilter hasil sebelum menampilkannya. Karena seluruh respons HTTP dikirim ke klien sebelum pemfilteran, pemfilteran sisi klien bisa lebih lambat daripada penyaringan sisi server untuk kumpulan data besar.

Query menggunakan [JMESPath sintaks](https://jmespath.org/) untuk membuat ekspresi untuk memfilter output Anda. Untuk mempelajari JMESPath sintaks, lihat [Tutorial](https://jmespath.org/tutorial.html) di *JMESPath situs 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` atau`tail`.
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.

**Topics**
+ [Sebelum Anda mulai](#cli-usage-filter-client-side-output)
+ [Pengidentifikasi](#cli-usage-filter-client-side-identifiers)
+ [Memilih dari daftar](#cli-usage-filter-client-side-select-list)
+ [Memfilter data bersarang](#cli-usage-filter-client-side-nested)
+ [Hasil perataan](#cli-usage-filter-client-side-specific-flattening)
+ [Pemfilteran untuk nilai tertentu](#cli-usage-filter-client-side-specific-values)
+ [Ekspresi perpipaan](#cli-usage-filter-client-side-pipe)
+ [Memfilter untuk beberapa nilai pengenal](#cli-usage-filter-client-side-miltiselect-list)
+ [Menambahkan label ke nilai pengenal](#cli-usage-filter-client-side-multiselect-hash)
+ [Fungsi](#cli-usage-filter-client-side-functions)
+ [`--query`Contoh lanjutan](#cli-usage-filter-client-side-advanced)

### Sebelum Anda mulai
<a name="cli-usage-filter-client-side-output"></a>

**catatan**  
Contoh ekspresi filter ini ditulis untuk shell seperti linux dasar. Saat menggunakan contoh ini, pastikan untuk menggunakan aturan kutipan yang benar untuk shell terminal Anda. Cara terminal Anda menafsirkan input Anda dapat sangat mengubah apa yang dikirim ke. AWS CLI Bagaimana terminal Anda membaca tanda kutip tunggal`'`, tanda kutip ganda`"`, atau backticks ``` dapat mengubah cara konten dibaca.  
Untuk informasi selengkapnya, lihat [Menggunakan tanda kutip dan literal dengan string di AWS CLI](cli-usage-parameters-quoting-strings.md).

Output JSON berikut menunjukkan contoh dari apa `--query` parameter dapat menghasilkan. Outputnya menjelaskan tiga volume Amazon EBS yang dilampirkan ke instans Amazon EC2 yang terpisah.

#### Contoh Output
<a name="cli-usage-filter-client-side-output-example"></a>

```
$ 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
<a name="cli-usage-filter-client-side-identifiers"></a>

Identifier adalah label untuk nilai output. Saat membuat filter, Anda menggunakan pengidentifikasi untuk mempersempit hasil kueri Anda. Dalam contoh output berikut, semua pengidentifikasi seperti`Volumes`,`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](https://jmespath.org/specification.html#identifiers ) di *JMESPath situs web*.

### Memilih dari daftar
<a name="cli-usage-filter-client-side-select-list"></a>

Daftar atau array adalah pengidentifikasi yang diikuti oleh braket persegi "`[`" seperti `Volumes` dan `Attachments` di. [Sebelum Anda mulai](#cli-usage-filter-client-side-output) 

**Sintaksis**

```
<listName>[ ]
```

Untuk memfilter semua output dari array, Anda dapat menggunakan notasi wildcard. Ekspresi [wildcard](http://jmespath.org/specification.html#wildcard-expressions) 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](http://jmespath.org/specification.html#index-expressions) 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]` ke`Volumes[: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](https://jmespath.org/specification.html#slices) di *JMESPath situs web*.

### Memfilter data bersarang
<a name="cli-usage-filter-client-side-nested"></a>

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 semua`Volumes`.

```
$ aws ec2 describe-volumes \
    --query 'Volumes[*].Attachments[*].State'
[
  [
    "attached"
  ],
  [
    "attached"
  ],
  [
    "attached"
  ]
]
```

### Hasil perataan
<a name="cli-usage-filter-client-side-specific-flattening"></a>

Untuk informasi lebih lanjut, lihat [SubExpressions](https://jmespath.org/specification.html#subexpressions)di *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](https://jmespath.org/specification.html#flatten) di *JMESPath situs web*.

### Pemfilteran untuk nilai tertentu
<a name="cli-usage-filter-client-side-specific-values"></a>

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](https://jmespath.org/specification.html#filterexpressions) di *JMESPathsitus web*.

### Ekspresi perpipaan
<a name="cli-usage-filter-client-side-pipe"></a>

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](https://jmespath.org/specification.html#pipe-expressions) di *JMESPathsitus web*.

### Memfilter untuk beberapa nilai pengenal
<a name="cli-usage-filter-client-side-miltiselect-list"></a>

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 bersarang`Attachments`. 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](https://jmespath.org/specification.html#multiselectlist) di *JMESPath situs web*.

### Menambahkan label ke nilai pengenal
<a name="cli-usage-filter-client-side-multiselect-hash"></a>

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 menampilkan`VolumeId`,, `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 lebih lanjut, lihat [hash Multiselect](https://jmespath.org/specification.html#multiselecthash) di situs web. JMESPath *

### Fungsi
<a name="cli-usage-filter-client-side-functions"></a>

 JMESPath Sintaks berisi banyak fungsi yang dapat Anda gunakan untuk kueri Anda. Untuk informasi tentang JMESPath fungsi, lihat [Fungsi bawaan](https://jmespath.org/specification.html#built-in-functions) di *JMESPathsitus web*.

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](#cli-usage-filter-client-side-multiselect-hash) 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\$1by di situs web](https://jmespath.org/specification.html#sort-by). JMESPath *

### `--query`Contoh lanjutan
<a name="cli-usage-filter-client-side-advanced"></a>

**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 ditentukan`ServiceName`, 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
<a name="cli-usage-filter-combining"></a>

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 volume Amazon EC2 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 dengan`CreationDate`, 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
```

Contoh berikut mengambil nama-nama grup Auto Scaling yang menggunakan konfigurasi peluncuran dalam yang Wilayah AWS ditentukan yang menggunakan tumpukan. CloudFormation 

```
$ aws autoscaling describe-auto-scaling-groups --region us-west-2 \
  --filters Name=tag-key,Values=aws:cloudformation:stack-name \
  --query 'AutoScalingGroups[?LaunchConfigurationName!=`null`].AutoScalingGroupName'
[
    "group-1",
    "group-2",
    "group-3"
]
```

## Sumber daya tambahan
<a name="cli-usage-filter-resources"></a>

**JMESPath Terminal**  
JMESPath Terminal 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](https://github.com/jmespath/jmespath.terminal) 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 tentang `jq` dan petunjuk pemasangan, lihat [jq](https://stedolan.github.io/jq/) on *GitHub*.