

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

# CloudTrail Pertanyaan danau
<a name="cloudtrail-lake-queries"></a>

**catatan**  
AWS CloudTrail Danau tidak akan lagi terbuka untuk pelanggan baru mulai 31 Mei 2026. Jika Anda ingin menggunakan CloudTrail Danau, daftar sebelum tanggal tersebut. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Untuk informasi selengkapnya, lihat [CloudTrail Perubahan ketersediaan danau](cloudtrail-lake-service-availability-change.md).

Pertanyaan di CloudTrail Lake ditulis dalam SQL. Anda dapat membuat kueri di tab CloudTrail Lake **Editor** dengan menulis kueri di SQL dari awal, dengan membuka kueri yang disimpan atau sampel dan mengeditnya, atau dengan menggunakan generator kueri untuk menghasilkan kueri dari prompt bahasa Inggris. Anda tidak dapat menimpa kueri sampel yang disertakan dengan perubahan Anda, tetapi Anda dapat menyimpannya sebagai kueri baru. Untuk informasi selengkapnya tentang bahasa kueri SQL yang diizinkan, lihat[CloudTrail Kendala Lake SQL](query-limitations.md).

Kueri tak terbatas (seperti`SELECT * FROM edsID`) memindai semua data di penyimpanan data acara Anda. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan stempel `eventTime` waktu mulai dan berakhir ke kueri. Berikut ini adalah contoh yang mencari semua peristiwa di penyimpanan data acara tertentu di mana waktu acara setelah (`>`) 5 Januari 2023 pukul 13:51 dan sebelum (`<`) 19 Januari 2023 pukul 1:51 siang. Karena penyimpanan data peristiwa memiliki periode retensi minimum tujuh hari, rentang waktu minimum antara `eventTime` nilai awal dan akhir juga tujuh hari.

```
SELECT *
FROM eds-ID
WHERE
     eventtime >='2023-01-05 13:51:00' and eventtime < ='2023-01-19 13:51:00'
```

Untuk informasi tentang cara mengoptimalkan kueri Anda, lihat[Optimalkan kueri CloudTrail Danau](lake-queries-optimization.md).

**Topics**
+ [Alat editor kueri](#query-editor-format-controls)
+ [Buat kueri CloudTrail Danau dari petunjuk bahasa alami](lake-query-generator.md)
+ [Lihat contoh kueri dengan konsol CloudTrail](lake-console-queries.md)
+ [Membuat atau mengedit kueri dengan CloudTrail konsol](query-create-edit-query.md)
+ [Jalankan kueri dan simpan hasil kueri dengan konsol](query-run-query.md)
+ [Lihat hasil kueri dengan konsol](query-results.md)
+ [Meringkas hasil kueri dalam bahasa alami](query-results-summary.md)
+ [Unduh hasil kueri yang disimpan](view-download-cloudtrail-lake-query-results.md)
+ [Validasi hasil kueri yang disimpan CloudTrail Lake](cloudtrail-query-results-validation.md)
+ [Optimalkan kueri CloudTrail Danau](lake-queries-optimization.md)
+ [Jalankan dan kelola kueri CloudTrail Lake dengan AWS CLI](lake-queries-cli.md)

## Alat editor kueri
<a name="query-editor-format-controls"></a>

Toolbar di kanan atas editor kueri menawarkan perintah untuk membantu penulis dan memformat kueri SQL Anda.

![\[Bilah alat editor kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-editor-toolbar.png)


Daftar berikut menjelaskan perintah pada toolbar.
+ **Undo** - Mengembalikan perubahan konten terakhir yang dibuat di editor kueri.
+ **Redo** — Mengulangi perubahan konten terakhir yang dibuat di editor kueri.
+ **Format yang dipilih** - Mengatur konten editor kueri sesuai dengan pemformatan SQL dan konvensi spasi.
+ **Komentar/batalkan komentar dipilih** - Komentar bagian yang dipilih dari kueri jika belum dikomentari. Jika bagian yang dipilih sudah dikomentari, memilih opsi ini akan menghapus komentar.

# Buat kueri CloudTrail Danau dari petunjuk bahasa alami
<a name="lake-query-generator"></a>

Anda dapat menggunakan generator kueri CloudTrail Lake untuk menghasilkan kueri dari prompt bahasa Inggris yang Anda berikan. Generator kueri menggunakan kecerdasan buatan generatif (AI generatif) untuk menghasilkan kueri ready-to-use SQL dari prompt Anda, yang kemudian dapat Anda pilih untuk dijalankan di editor kueri Lake, atau selengkapnya. Anda tidak perlu memiliki pengetahuan luas tentang SQL atau bidang CloudTrail acara untuk menggunakan generator kueri.

Prompt dapat berupa pertanyaan atau pernyataan tentang data acara di penyimpanan data acara CloudTrail Lake Anda. Misalnya, Anda dapat memasukkan petunjuk seperti "What are my top errors in the past month?" dan “Give me a list of users that used SNS.”

Prompt dapat memiliki minimal 3 karakter dan maksimal 500 karakter.

Tidak ada biaya untuk menghasilkan kueri; Namun, ketika Anda menjalankan kueri, Anda dikenakan biaya berdasarkan jumlah data yang dioptimalkan dan dikompresi yang dipindai. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan `eventTime` stempel waktu awal dan akhir ke kueri.

**catatan**  
Anda dapat memberikan umpan balik tentang kueri yang dihasilkan dengan memilih tombol jempol ke atas atau jempol ke bawah yang muncul di bawah kueri yang dihasilkan. Saat Anda memberikan umpan balik, CloudTrail menyimpan prompt Anda dan kueri yang dihasilkan.  
Jangan sertakan informasi identitas pribadi, rahasia, atau sensitif apa pun dalam permintaan Anda.  
Fitur ini menggunakan model bahasa besar AI generatif (LLMs); kami sarankan untuk memeriksa ulang respons LLM.

**catatan**  
CloudTrail akan secara otomatis memilih wilayah optimal dalam geografi Anda untuk memproses permintaan inferensi sambil menghasilkan kueri. Ini memaksimalkan sumber daya komputasi yang tersedia, ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Data Anda akan tetap disimpan hanya di wilayah tempat permintaan berasal, namun, permintaan input dan hasil keluaran dapat diproses di luar wilayah tersebut. Semua data akan dikirimkan dienkripsi di seluruh jaringan aman Amazon.  
 CloudTrail akan dengan aman merutekan permintaan inferensi Anda ke sumber daya komputasi yang tersedia dalam wilayah geografis tempat permintaan tersebut berasal, sebagai berikut:   
Permintaan inferensi yang berasal dari Amerika Serikat akan diproses di Amerika Serikat
Permintaan inferensi yang berasal dari Jepang akan diproses di Jepang
Permintaan inferensi yang berasal dari Australia akan diproses di Australia.
Permintaan inferensi yang berasal dari Uni Eropa akan diproses di dalam Uni Eropa
Permintaan inferensi yang berasal dari India akan diproses di India
 Untuk memilih keluar dari fitur pembuatan kueri, Anda dapat secara eksplisit menolak atau menghapus `cloudtrail:GenerateQuery` tindakan dari kebijakan iam yang Anda gunakan. 

Anda dapat mengakses generator kueri menggunakan CloudTrail konsol dan AWS CLI.

------
#### [ CloudTrail console ]

**Untuk menggunakan generator kueri di CloudTrail konsol**

1. Masuk ke Konsol Manajemen AWS dan buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dari panel navigasi, di bawah **Danau**, pilih **Kueri**. 

1. Pada halaman **Query**, pilih tab **Editor**.

1. Pilih penyimpanan data acara yang ingin Anda buat kueri.

1. Di area **generator Query**, masukkan prompt dalam bahasa Inggris biasa. Sebagai contoh, lihat [Contoh petunjuk](#lake-query-generator-examples).

1. Pilih **Hasilkan kueri**. Generator kueri akan mencoba menghasilkan kueri dari prompt Anda. Jika berhasil, generator kueri menyediakan kueri SQL di editor. Jika prompt tidak berhasil, ulangi prompt Anda dan coba lagi.

1. (Opsional) Anda dapat memberikan umpan balik tentang kueri yang dihasilkan. Untuk memberikan umpan balik, pilih tombol jempol ke atas atau jempol ke bawah yang muncul di bawah prompt. Saat Anda memberikan umpan balik, CloudTrail menyimpan prompt Anda dan kueri yang dihasilkan.

1. (Opsional) Pilih **Jalankan** untuk menjalankan kueri.
**catatan**  
Saat menjalankan kueri, Anda dikenakan biaya berdasarkan jumlah data yang dioptimalkan dan dikompresi yang dipindai. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan `eventTime` stempel waktu awal dan akhir ke kueri.

1. (Opsional) Jika Anda menjalankan kueri dan ada hasil, Anda dapat memilih **Ringkas hasil** untuk menghasilkan ringkasan bahasa alami dalam bahasa Inggris dari hasil kueri. Opsi ini menggunakan kecerdasan buatan generatif (AI generatif) untuk menghasilkan ringkasan. Untuk informasi selengkapnya tentang metrik ini, lihat [Meringkas hasil kueri dalam bahasa alami](query-results-summary.md).

   Anda dapat memberikan umpan balik tentang ringkasan dengan memilih tombol jempol ke atas atau jempol ke bawah yang muncul di bawah ringkasan yang dihasilkan.
**catatan**  
Fitur ringkasan kueri ada dalam rilis pratinjau untuk CloudTrail Lake dan dapat berubah sewaktu-waktu. Fitur ini tersedia di wilayah berikut: Asia Pasifik (Tokyo), AS Timur (Virginia N.), dan AS Barat (Oregon).

------
#### [ AWS CLI ]

**Untuk menghasilkan kueri dengan AWS CLI**

Jalankan `generate-query` perintah untuk menghasilkan kueri dari prompt bahasa Inggris. Untuk`--event-data-stores`, berikan ARN (atau akhiran ID ARN) dari penyimpanan data acara yang ingin Anda kueri. Anda hanya dapat menentukan satu penyimpanan data acara. Untuk`--prompt`, berikan prompt dalam bahasa Inggris. 

```
aws cloudtrail generate-query 
--event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \
--prompt "Show me all console login events for the past week?"
```

Jika berhasil, perintah mengeluarkan pernyataan SQL dan memberikan `QueryAlias` yang akan Anda gunakan dengan `start-query` perintah untuk menjalankan kueri terhadap penyimpanan data acara Anda.

```
{
  "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'",
  "QueryAlias": "AWSCloudTrail-UUID"
}
```

**Untuk menjalankan kueri dengan AWS CLI**

Jalankan `start-query` perintah dengan `QueryAlias` output oleh `generate-query` perintah pada contoh sebelumnya. Anda juga memiliki opsi untuk menjalankan `start-query` perintah dengan menyediakan file`QueryStatement`.

```
aws cloudtrail start-query --query-alias AWSCloudTrail-UUID
```

Responsnya adalah `QueryId` string. Untuk mendapatkan status kueri, jalankan `describe-query` menggunakan `QueryId` nilai yang dikembalikan oleh`start-query`. Jika kueri berhasil, Anda dapat menjalankan `get-query-results` untuk mendapatkan hasil.

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE"
}
```

**catatan**  
Kueri yang berjalan lebih dari satu jam mungkin habis. Anda masih bisa mendapatkan sebagian hasil yang diproses sebelum waktu kueri habis.  
Jika Anda mengirimkan hasil kueri ke bucket S3 menggunakan `--delivery-s3uri` parameter opsional, kebijakan bucket harus memberikan CloudTrail izin untuk mengirimkan hasil kueri ke bucket. Untuk informasi tentang mengedit kebijakan bucket secara manual, lihat[Kebijakan bucket Amazon S3 untuk hasil kueri CloudTrail Lake](s3-bucket-policy-lake-query-results.md).

------

## Izin yang diperlukan
<a name="lake-query-generator-permissions."></a>

Kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)dan kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)terkelola keduanya memberikan izin yang diperlukan untuk menggunakan fitur ini.

Anda juga dapat menyertakan tindakan `cloudtrail:GenerateQuery` dalam kebijakan terkelola atau inline pelanggan baru atau yang sudah ada.

## Dukungan Wilayah
<a name="lake-query-generator-regions"></a>

Fitur ini didukung sebagai berikut Wilayah AWS:
+ Wilayah Asia Pasifik (Mumbai) (ap-south-1)
+ Wilayah Asia Pasifik (Sydney) (ap-southeast-2)
+ Wilayah Asia Pasifik (Tokyo) (ap-northeast-1)
+ Wilayah Kanada (Tengah) (ca-central-1)
+ Wilayah Eropa (London) (eu-west-2)
+ Wilayah AS Timur (Virginia N.) (us-east-1)
+ Wilayah AS Barat (Oregon) (us-west-2)

## Batasan
<a name="lake-query-generator-limitations"></a>

Berikut ini adalah batasan generator kueri:
+ Generator kueri hanya dapat menerima petunjuk dalam bahasa Inggris.
+ Generator kueri hanya dapat menghasilkan kueri untuk penyimpanan data peristiwa yang mengumpulkan CloudTrail peristiwa (peristiwa manajemen, peristiwa data, peristiwa aktivitas jaringan).
+ Generator kueri tidak dapat menghasilkan kueri untuk prompt yang tidak berkaitan dengan data peristiwa CloudTrail Lake.

## Contoh petunjuk
<a name="lake-query-generator-examples"></a>

Bagian ini memberikan contoh prompt dan query SQL yang dihasilkan dari prompt.

Jika Anda memilih untuk menjalankan contoh kueri di bagian ini, ganti *eds-id* dengan ID penyimpanan data peristiwa yang ingin Anda kueri dan ganti stempel waktu dengan stempel waktu yang sesuai untuk kasus penggunaan Anda. Stempel waktu memiliki format sebagai berikut:. `YYYY-MM-DD HH:MM:SS`

**Prompt:** What are my top errors in the past month?

**Kueri SQL:**

```
SELECT
    errorMessage,
    COUNT(*) as eventCount
FROM
    eds-id
WHERE
    errorMessage IS NOT NULL
AND eventTime >= timestamp '2024-05-01 00:00:00'
AND eventTime <= timestamp '2024-05-31 23:59:59'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 2;
```

**Prompt:** Give me a list of users that used Amazon SNS.

**Kueri SQL:**

```
SELECT
    DISTINCT userIdentity.arn AS user
FROM
    eds-id
WHERE
    eventSource = 'sns.amazonaws.com'
```

**Prompt:** What are my API counts each day for read and write events in the past month?

**Kueri SQL:**

```
SELECT date(eventTime) AS event_date,
    SUM(
        CASE
            WHEN readonly = true THEN 1
            ELSE 0
        END
    ) AS read_events,
    SUM(
        CASE
            WHEN readonly = false THEN 1
            ELSE 0
        END
    ) AS write_events
FROM
    eds-id
WHERE
    eventTime >= timestamp '2024-05-04 00:00:00'
AND eventTime <= timestamp '2024-06-04 23:59:59'
GROUP BY 1
ORDER BY 1 ASC;
```

**Prompt:** Show any events with access denied errors for the past three weeks.

**Kueri SQL:**

```
SELECT *
FROM 
  eds-id
WHERE
  WHERE (errorCode = 'AccessDenied' OR errorMessage = 'Access Denied')
AND eventTime >= timestamp '2024-05-16 01:00:00'
AND eventTime <= timestamp '2024-06-06 01:00:00'
```

**Prompt:** Query the number of calls each operator performed on the date *2024-05-01*. The operator is a principal tag.

**Kueri SQL:**

```
SELECT element_at(
        eventContext.tagContext.principalTags,
        'operator'
    ) AS operator,
    COUNT(*) AS eventCount
FROM
    eds-id
WHERE eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
GROUP BY 1
ORDER BY 2 DESC;
```

**Prompt:** Give me all event IDs that touched resources within the CloudFormation stack with name *myStack* on the date *2024-05-01*.

**Kueri SQL:**

```
SELECT eventID
FROM
    eds-id
WHERE any_match(
        eventContext.tagcontext.resourcetags,
        rt->element_at(rt.tags, 'aws:cloudformation:stack-name') = 'myStack'
    )
    AND eventtime >= '2024-05-01 00:00:00'
    AND eventtime < '2024-05-01 23:59:59'
```

**Prompt:** Count the number of events grouped by resource tag '*solution*' values, listing them in descending order of count.

**Kueri SQL:**

```
SELECT element_at(rt.tags, 'solution'),
    count(*) as event_count
FROM
    eds-id,
    unnest(eventContext.tagContext.resourceTags) as rt
WHERE eventtime < '2025-05-14 19:00:00'
GROUP BY 1
ORDER BY 2 DESC;
```

**Prompt:** Find all Amazon S3 data events where resource tag Environment has value *prod*.

**Kueri SQL:**

```
SELECT *
FROM
    eds-id
WHERE eventCategory = 'Data'
    AND eventSource = 's3.amazonaws.com'
    AND eventtime >= '2025-05-14 00:00:00'
    AND eventtime < '2025-05-14 20:00:00'
    AND any_match(
        eventContext.tagContext.resourceTags,
        rt->element_at(rt.tags, 'Environment') = 'prod'
    )
```

# Lihat contoh kueri dengan konsol CloudTrail
<a name="lake-console-queries"></a>

 CloudTrail Konsol menyediakan sejumlah contoh kueri yang dapat membantu Anda mulai menulis kueri Anda sendiri.

CloudTrail kueri dikenakan biaya berdasarkan jumlah data yang dipindai. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan stempel `eventTime` waktu mulai dan berakhir ke kueri. Untuk informasi selengkapnya tentang CloudTrail harga, lihat [AWS CloudTrail Harga](https://aws.amazon.com/cloudtrail/pricing/).

**catatan**  
Anda juga dapat melihat kueri yang dibuat oleh GitHub komunitas. Untuk informasi lebih lanjut, lihat [pertanyaan sampel CloudTrail Danau](https://github.com/aws-samples/cloud-trail-lake-query-samples) di GitHub situs web. AWS CloudTrail belum mengevaluasi kueri di. GitHub 

**Untuk melihat dan menjalankan kueri sampel**

1. Masuk ke Konsol Manajemen AWS dan buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dari panel navigasi, di bawah **Danau**, pilih **Kueri**. 

1. Pada halaman **Query**, pilih tab **Contoh query.**

1. Pilih contoh kueri dari daftar atau masukkan frasa untuk dicari. Dalam contoh ini, kita akan membuka kueri **Selidiki siapa yang membuat perubahan konsol** dengan memilih **nama Query**. Ini membuka kueri di tab **Editor**.
**catatan**  
Secara default, halaman ini menggunakan fungsionalitas pencarian dasar. Anda dapat meningkatkan fungsionalitas pencarian dengan menambahkan izin untuk `cloudtrail:SearchSampleQueries` tindakan, jika belum disediakan oleh kebijakan izin Anda. Kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)terkelola memberikan izin untuk melakukan `cloudtrail:SearchSampleQueries` tindakan.  
![\[Tab Kueri sampel\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-sample-console.png)

1. Pada tab **Editor**, pilih penyimpanan data acara yang ingin Anda jalankan kueri. Saat Anda memilih penyimpanan data acara dari daftar, CloudTrail secara otomatis mengisi ID penyimpanan data acara di `FROM` baris editor kueri.  
![\[Pilih penyimpanan data acara untuk kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-editor-console.png)

1. Pilih **Jalankan** untuk menjalankan kueri.

   Tab **Output perintah** menunjukkan metadata tentang kueri Anda, seperti apakah kueri berhasil, jumlah catatan yang cocok, dan waktu menjalankan kueri.  
![\[Lihat status kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-console-status.png)

   Tab **Hasil kueri** menampilkan data peristiwa di penyimpanan data peristiwa terpilih yang cocok dengan kueri Anda.  
![\[Lihat hasil kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-console-results.png)

Untuk informasi selengkapnya tentang mengedit kueri, lihat[Membuat atau mengedit kueri dengan CloudTrail konsol](query-create-edit-query.md). Untuk informasi selengkapnya tentang menjalankan kueri dan menyimpan hasil kueri, lihat[Jalankan kueri dan simpan hasil kueri dengan konsol](query-run-query.md).

# Membuat atau mengedit kueri dengan CloudTrail konsol
<a name="query-create-edit-query"></a>

Dalam panduan ini, kami membuka salah satu contoh kueri, mengeditnya untuk menemukan tindakan yang diambil oleh pengguna tertentu bernama`Alice`, dan menyimpannya sebagai kueri baru. Anda juga dapat mengedit kueri tersimpan di tab **Kueri tersimpan**, jika Anda telah menyimpan kueri. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan stempel `eventTime` waktu mulai dan berakhir ke kueri.

1. Masuk ke Konsol Manajemen AWS dan buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dari panel navigasi, di bawah **Danau**, pilih **Kueri**. 

1. Pada halaman **Query**, pilih tab **Contoh query.**

1. Buka kueri sampel dengan memilih **nama Query**. Ini membuka kueri di tab **Editor**. Dalam contoh ini, kita akan memilih kueri bernama **Selidiki tindakan pengguna** dan mengedit kueri untuk menemukan tindakan untuk pengguna tertentu bernama`Alice`.

1. Di tab **Editor**, edit `WHERE` baris untuk menentukan pengguna yang ingin Anda selidiki dan perbarui `eventTime` nilai sesuai kebutuhan. Nilai `FROM` adalah bagian ID dari ARN penyimpanan data acara dan secara otomatis diisi oleh CloudTrail ketika Anda memilih penyimpanan data acara.

   ```
   SELECT
       eventID, eventName, eventSource, eventTime, userIdentity.arn AS user
   FROM
       event-data-store-id
   WHERE
       userIdentity.arn LIKE '%Alice%'
       AND eventTime > '2023-06-23 00:00:00' AND eventTime < '2023-06-26 00:00:00'
   ```

1. Anda dapat menjalankan kueri sebelum menyimpannya, untuk memverifikasi bahwa kueri berfungsi. Untuk menjalankan kueri, pilih penyimpanan data peristiwa dari daftar drop-down **penyimpanan data peristiwa**, lalu pilih **Jalankan**. Lihat kolom **Status** pada tab **keluaran Perintah** untuk kueri aktif guna memverifikasi bahwa kueri berhasil dijalankan.

1. Ketika Anda telah memperbarui kueri sampel, pilih **Simpan**.

1. Di **Simpan kueri**, masukkan nama dan deskripsi untuk kueri. Pilih **Simpan kueri** untuk menyimpan perubahan Anda sebagai kueri baru. Untuk membuang perubahan pada kueri, pilih **Batalkan**, atau tutup jendela **Simpan kueri**.  
![\[Menyimpan kueri yang diubah\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-save.png)
**catatan**  
Kueri tersimpan terkait dengan browser Anda; jika Anda menggunakan browser lain atau perangkat lain untuk mengakses CloudTrail konsol, kueri yang disimpan tidak tersedia.

1. Buka tab **Kueri tersimpan** untuk melihat kueri baru di tabel.  
![\[Tab kueri tersimpan yang menunjukkan kueri baru yang disimpan\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-saved-table.png)

# Jalankan kueri dan simpan hasil kueri dengan konsol
<a name="query-run-query"></a>

Setelah memilih atau menyimpan kueri, Anda dapat menjalankan kueri di penyimpanan data acara. 

 Saat menjalankan kueri, Anda memiliki opsi untuk menyimpan hasil kueri ke bucket Amazon S3. Saat menjalankan kueri di CloudTrail Lake, Anda dikenakan biaya berdasarkan jumlah data yang dipindai oleh kueri. Tidak ada biaya CloudTrail Danau tambahan untuk menyimpan hasil kueri ke ember S3, namun, ada biaya penyimpanan S3. Untuk informasi selengkapnya tentang harga S3, lihat harga [Amazon S3](https://aws.amazon.com/s3/pricing/). 

 Saat Anda menyimpan hasil kueri, hasil kueri mungkin ditampilkan di CloudTrail konsol sebelum dapat dilihat di bucket S3 karena CloudTrail memberikan hasil kueri setelah pemindaian kueri selesai. Meskipun sebagian besar kueri selesai dalam beberapa menit, tergantung pada ukuran penyimpanan data acara Anda, dapat memakan waktu lebih lama untuk mengirimkan hasil kueri CloudTrail ke bucket S3 Anda. CloudTrail mengirimkan hasil kueri ke bucket S3 dalam format gzip terkompresi. Rata-rata, setelah pemindaian kueri selesai, Anda dapat mengharapkan latensi 60 hingga 90 detik untuk setiap GB data yang dikirim ke bucket S3.

**Untuk menjalankan kueri menggunakan CloudTrail Lake**

1. Masuk ke Konsol Manajemen AWS dan buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dari panel navigasi, di bawah **Danau**, pilih **Kueri**. 

1. **Pada tab **Kueri tersimpan** atau **Kueri sampel**, pilih kueri yang akan dijalankan dengan memilih nama Kueri.** 

1. Pada tab **Editor**, untuk **penyimpanan data acara**, pilih penyimpanan data acara dari daftar drop-down.

1. (Opsional) Pada tab **Editor**, pilih **Simpan hasil ke S3** untuk menyimpan hasil kueri ke bucket S3. Saat Anda memilih bucket S3 default, CloudTrail buat dan terapkan kebijakan bucket yang diperlukan. Jika Anda memilih bucket S3 default, kebijakan IAM Anda harus menyertakan izin untuk `s3:PutEncryptionConfiguration` tindakan karena enkripsi sisi server secara default diaktifkan untuk bucket. Untuk informasi selengkapnya tentang menyimpan hasil kueri, lihat[Informasi tambahan tentang hasil kueri yang disimpan](#save-query-results). 
**catatan**  
 Untuk menggunakan bucket yang berbeda, tentukan nama bucket, atau pilih **Browse S3** untuk memilih bucket. Kebijakan bucket harus memberikan CloudTrail izin untuk mengirimkan hasil kueri ke bucket. Untuk informasi tentang mengedit kebijakan bucket secara manual, lihat[Kebijakan bucket Amazon S3 untuk hasil kueri CloudTrail Lake](s3-bucket-policy-lake-query-results.md). 

1. Pada tab **Editor**, pilih **Jalankan**.

   Bergantung pada ukuran penyimpanan data acara Anda, dan jumlah hari data yang disertakan, kueri dapat memakan waktu beberapa menit untuk dijalankan. Tab **keluaran Command** menunjukkan status kueri, dan apakah kueri selesai dijalankan. Ketika kueri selesai berjalan, buka tab **Hasil kueri** untuk melihat tabel hasil untuk kueri aktif (kueri saat ini ditampilkan di editor).

**catatan**  
Kueri yang berjalan lebih dari satu jam mungkin habis. Anda masih bisa mendapatkan sebagian hasil yang diproses sebelum waktu kueri habis. CloudTrail tidak memberikan hasil kueri sebagian ke bucket S3. Untuk menghindari waktu habis, Anda dapat memperbaiki kueri untuk membatasi jumlah data yang dipindai dengan menentukan rentang waktu yang lebih sempit.

## Informasi tambahan tentang hasil kueri yang disimpan
<a name="save-query-results"></a>

Setelah menyimpan hasil kueri, Anda dapat mengunduh hasil kueri yang disimpan dari bucket S3. Untuk informasi selengkapnya tentang menemukan dan mengunduh hasil kueri yang disimpan, lihat[Unduh hasil kueri yang disimpan](view-download-cloudtrail-lake-query-results.md).

Anda juga dapat memvalidasi hasil kueri yang disimpan untuk menentukan apakah hasil kueri diubah, dihapus, atau tidak diubah setelah CloudTrail mengirimkan hasil kueri. Untuk informasi selengkapnya tentang memvalidasi hasil kueri yang disimpan, lihat[Validasi hasil kueri yang disimpan CloudTrail Lake](cloudtrail-query-results-validation.md).

## Contoh: Menyimpan hasil kueri ke bucket Amazon S3
<a name="scenario-lake-save-queries"></a>

Panduan ini menunjukkan bagaimana Anda dapat menyimpan hasil kueri ke bucket S3 dan kemudian mengunduh hasil kueri tersebut.

**Untuk menyimpan hasil kueri ke bucket Amazon S3**

1. Masuk ke Konsol Manajemen AWS dan buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1.  Dari panel navigasi, di bawah **Danau**, pilih **Kueri**. 

1. **Pada tab **Kueri sampel** atau **Kueri tersimpan**, pilih kueri yang akan dijalankan dengan memilih nama Kueri.** Dalam contoh ini, kita akan memilih query sampel bernama **Selidiki tindakan pengguna**.

1. Pada tab **Editor**, untuk **penyimpanan data acara**, pilih penyimpanan data acara dari daftar drop-down. Saat Anda memilih penyimpanan data acara dari daftar, CloudTrail secara otomatis mengisi ID penyimpanan data acara di `From` baris.

1. Dalam contoh query ini, kita akan mengedit `userIdentity.ARN` nilai untuk menentukan nama pengguna`Admin`, dan kita akan meninggalkan nilai default untuk`eventTime`. Saat menjalankan kueri, Anda dikenakan biaya untuk jumlah data yang dipindai. Untuk membantu mengontrol biaya, sebaiknya Anda membatasi kueri dengan menambahkan stempel `eventTime` waktu mulai dan berakhir ke kueri.  
![\[Edit userIdentity.ARN nilai dalam kueri sampel\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/sample-query-edit.png)

1. Pilih **Simpan hasil ke S3** untuk menyimpan hasil kueri ke bucket S3. Saat Anda memilih bucket S3 default, CloudTrail buat dan terapkan kebijakan bucket yang diperlukan. Jika Anda memilih bucket S3 default, kebijakan IAM Anda harus menyertakan izin untuk `s3:PutEncryptionConfiguration` tindakan karena enkripsi sisi server secara default diaktifkan untuk bucket. Dalam contoh ini, kita akan menggunakan bucket S3 default.
**catatan**  
 Untuk menggunakan bucket yang berbeda, tentukan nama bucket, atau pilih **Browse S3** untuk memilih bucket. Kebijakan bucket harus memberikan CloudTrail izin untuk mengirimkan hasil kueri ke bucket. Untuk informasi tentang mengedit kebijakan bucket secara manual, lihat[Kebijakan bucket Amazon S3 untuk hasil kueri CloudTrail Lake](s3-bucket-policy-lake-query-results.md).   
![\[Bucket S3 yang dipilih untuk hasil kueri yang disimpan.\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/save-query-results.png)

1. Pilih **Jalankan**. Bergantung pada ukuran penyimpanan data acara Anda, dan jumlah hari data yang disertakan, kueri dapat memakan waktu beberapa menit untuk dijalankan. Tab **keluaran Command** menunjukkan status kueri, dan apakah kueri selesai dijalankan. Ketika kueri selesai berjalan, buka tab **Hasil kueri** untuk melihat tabel hasil untuk kueri aktif (kueri saat ini ditampilkan di editor).

1. Saat CloudTrail menyelesaikan pengiriman hasil kueri yang disimpan ke bucket S3 Anda, kolom **Status pengiriman** menyediakan tautan ke bucket S3 yang berisi file hasil kueri tersimpan serta [file tanda](cloudtrail-query-results-validation.md#cloudtrail-results-file-validation-sign-file-structure) yang dapat Anda gunakan untuk memverifikasi hasil kueri yang disimpan. Pilih **Lihat di S3** untuk melihat file hasil kueri dan menandatangani file di bucket S3.
**catatan**  
 Saat Anda menyimpan hasil kueri, hasil kueri dapat ditampilkan di CloudTrail konsol sebelum dapat dilihat di bucket S3 karena CloudTrail memberikan hasil kueri setelah pemindaian kueri selesai. Meskipun sebagian besar kueri selesai dalam beberapa menit, tergantung pada ukuran penyimpanan data acara Anda, dapat memakan waktu lebih lama untuk mengirimkan hasil kueri CloudTrail ke bucket S3 Anda. CloudTrail mengirimkan hasil kueri ke bucket S3 dalam format gzip terkompresi. Rata-rata, setelah pemindaian kueri selesai, Anda dapat mengharapkan latensi 60 hingga 90 detik untuk setiap GB data yang dikirim ke bucket S3.  
![\[Status pengiriman kueri pada tab keluaran Perintah\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/query-delivery-status.png)

1. Untuk mengunduh hasil kueri Anda, pilih file hasil kueri (dalam contoh ini,`result_1.csv.gz`) lalu pilih **Unduh**.  
![\[Unduh file hasil kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/download-query-results.png)

Untuk informasi tentang memvalidasi hasil kueri yang disimpan, lihat[Validasi hasil kueri yang disimpan CloudTrail Lake](cloudtrail-query-results-validation.md).

# Lihat hasil kueri dengan konsol
<a name="query-results"></a>

Setelah kueri selesai, Anda dapat melihat hasilnya. Hasil kueri tersedia selama tujuh hari setelah kueri selesai. Anda dapat melihat hasil untuk kueri aktif di tab **Hasil kueri**, atau Anda dapat mengakses hasil untuk semua kueri terbaru di tab **Riwayat hasil** di halaman beranda **Lake**.

Hasil kueri dapat berubah dari proses kueri yang lebih lama ke yang lebih baru, karena peristiwa selanjutnya dalam periode kueri dapat dicatat di antara kueri.

Saat Anda menyimpan hasil kueri, hasil kueri mungkin ditampilkan di CloudTrail konsol sebelum dapat dilihat di bucket S3 karena CloudTrail memberikan hasil kueri setelah pemindaian kueri selesai. Meskipun sebagian besar kueri selesai dalam beberapa menit, tergantung pada ukuran penyimpanan data acara Anda, dapat memakan waktu lebih lama untuk mengirimkan hasil kueri CloudTrail ke bucket S3 Anda. CloudTrail mengirimkan hasil kueri ke bucket S3 dalam format gzip terkompresi. Rata-rata, setelah pemindaian kueri selesai, Anda dapat mengharapkan latensi 60 hingga 90 detik untuk setiap GB data yang dikirim ke bucket S3. Untuk informasi selengkapnya tentang menemukan dan mengunduh hasil kueri yang disimpan, lihat[Unduh hasil kueri yang disimpan](view-download-cloudtrail-lake-query-results.md).

**catatan**  
Kueri yang berjalan lebih dari satu jam mungkin habis. Anda masih bisa mendapatkan sebagian hasil yang diproses sebelum waktu kueri habis. CloudTrail tidak memberikan hasil kueri sebagian ke bucket S3. Untuk menghindari waktu habis, Anda dapat memperbaiki kueri untuk membatasi jumlah data yang dipindai dengan menentukan rentang waktu yang lebih sempit.

**Untuk melihat hasil kueri**

1. Pilih tab **Hasil kueri** pada editor kueri jika belum dipilih. Pada tab **Hasil kueri** untuk kueri aktif, setiap baris mewakili hasil peristiwa yang cocok dengan kueri. Filter hasil dengan memasukkan semua atau sebagian dari nilai bidang peristiwa di bilah pencarian. Untuk menyalin acara, pilih acara yang ingin Anda salin lalu pilih **Salin**.

1. (Opsional) Pilih **Ringkas hasil** untuk menghasilkan ringkasan bahasa alami dari hasil kueri. Ringkasan disediakan dalam bahasa Inggris. Opsi ini menggunakan kecerdasan buatan generatif (AI generatif) untuk menghasilkan ringkasan. Untuk informasi selengkapnya tentang metrik ini, lihat [Meringkas hasil kueri dalam bahasa alami](query-results-summary.md).

   Anda dapat memberikan umpan balik tentang ringkasan dengan memilih tombol jempol ke atas atau jempol ke bawah yang muncul di bawah ringkasan yang dihasilkan.
**catatan**  
Fitur ringkasan kueri ada dalam rilis pratinjau untuk CloudTrail Lake dan dapat berubah sewaktu-waktu. Fitur ini tersedia di wilayah berikut: Asia Pasifik (Tokyo), AS Timur (Virginia N.), dan AS Barat (Oregon).

1. Pada tab **keluaran Perintah**, lihat metadata tentang kueri yang dijalankan, seperti ID penyimpanan data peristiwa, waktu berjalan, jumlah hasil yang dipindai, dan apakah kueri berhasil atau tidak. Jika Anda menyimpan hasil kueri ke bucket Amazon S3, metadata juga menyertakan tautan ke bucket S3 yang berisi hasil kueri yang disimpan.

# Meringkas hasil kueri dalam bahasa alami
<a name="query-results-summary"></a>

**catatan**  
Fitur ringkasan kueri ada dalam rilis pratinjau untuk CloudTrail Lake dan dapat berubah sewaktu-waktu.

**catatan**  
CloudTrail akan secara otomatis memilih wilayah optimal dalam geografi Anda untuk memproses permintaan inferensi sambil meringkas kueri. Ini memaksimalkan sumber daya komputasi yang tersedia, ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Data Anda akan tetap disimpan hanya di wilayah tempat permintaan berasal, namun, permintaan input dan hasil keluaran dapat diproses di luar wilayah tersebut. Semua data akan dikirimkan dienkripsi di seluruh jaringan aman Amazon.  
 CloudTrail akan dengan aman merutekan permintaan inferensi Anda ke sumber daya komputasi yang tersedia dalam wilayah geografis tempat permintaan tersebut berasal, sebagai berikut:   
Permintaan inferensi yang berasal dari Amerika Serikat akan diproses di Amerika Serikat
Permintaan inferensi yang berasal dari Jepang akan diproses di Jepang
 Untuk memilih keluar dari fitur ringkasan kueri, Anda dapat secara eksplisit menolak atau menghapus `cloudtrail:GenerateQueryResultsSummary` tindakan dari kebijakan iam yang Anda gunakan. 

Setelah kueri selesai, Anda bisa mendapatkan ringkasan hasil kueri dalam bahasa alami dari tab **Hasil kueri** di editor kueri. Opsi ini menggunakan kecerdasan buatan generatif (AI generatif) untuk menghasilkan ringkasan.

**Untuk meringkas hasil kueri**

1. Dari tab **Hasil kueri** editor kueri, pilih **Ringkas hasil** untuk menghasilkan ringkasan bahasa alami dari hasil kueri. Ringkasan disediakan dalam bahasa Inggris.

1. (Opsional) Berikan umpan balik tentang ringkasan dengan memilih tombol jempol ke atas atau jempol ke bawah yang muncul di bawah ringkasan yang dihasilkan.

Jika penyimpanan data peristiwa terkait dienkripsi menggunakan kunci KMS, Anda tidak dapat menggunakan kunci KMS untuk mengenkripsi hasil kueri dan ringkasan. Hasil kueri dan ringkasan malah dienkripsi oleh. CloudTrail

Akses ke ringkasan yang dihasilkan diotorisasi terhadap`GetQueryResults`,`GenerateQueryResultsSummary`, dan izin KMS (jika penyimpanan tanggal acara terkait dienkripsi dengan kunci KMS). Saat ringkasan dibuat, CloudTrail merekam peristiwa yang dinamai `GenerateQueryResultsSummary` untuk visibilitas.

## Izin yang diperlukan
<a name="query-results-summary-permissions."></a>

Kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSCloudTrail_FullAccess.html)dan kebijakan [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)terkelola keduanya memberikan izin yang diperlukan untuk menggunakan fitur ini.

Anda juga dapat menyertakan `cloudtrail:GenerateQueryResultsSummary` dan `cloudtrail:GetQueryResults` tindakan dalam kebijakan terkelola atau inline pelanggan baru atau yang sudah ada.

Jika penyimpanan data peristiwa yang terkait dengan hasil kueri yang diringkas dienkripsi dengan kunci KMS, Anda juga memerlukan izin untuk kunci KMS.

## Dukungan Wilayah
<a name="query-results-summary-regions"></a>

Fitur ini tersedia sebagai berikut Wilayah AWS:
+ Wilayah Asia Pasifik (Tokyo) (ap-northeast-1)
+ Wilayah AS Timur (Virginia N.) (us-east-1)
+ Wilayah AS Barat (Oregon) (us-west-2)

## Batasan
<a name="query-results-summary-limitations"></a>

Berikut ini adalah batasan fitur ini:
+ Ringkasan hanya dalam bahasa Inggris.
+ Ringkasan terbatas pada penyimpanan data acara yang mengumpulkan CloudTrail peristiwa (peristiwa manajemen, peristiwa data, peristiwa aktivitas jaringan).
+ Setiap ringkasan adalah untuk hasil dari satu kueri.
+ Ukuran hasil kueri harus kurang dari 250 KB.
+ Kuota bulanan hasil kueri yang dapat diringkas adalah 3 MB.

# Unduh hasil kueri yang disimpan
<a name="view-download-cloudtrail-lake-query-results"></a>

Setelah Anda menyimpan hasil kueri, Anda harus dapat menemukan file yang berisi hasil kueri. CloudTrail mengirimkan hasil kueri ke bucket Amazon S3 yang ditentukan saat menyimpan hasil kueri. 

**catatan**  
 Saat Anda menyimpan hasil kueri, hasil kueri mungkin ditampilkan di konsol sebelum dapat dilihat di bucket S3 karena CloudTrail memberikan hasil kueri setelah pemindaian kueri selesai. Meskipun sebagian besar kueri selesai dalam beberapa menit, tergantung pada ukuran penyimpanan data acara Anda, dapat memakan waktu lebih lama untuk mengirimkan hasil kueri CloudTrail ke bucket S3 Anda. CloudTrail mengirimkan hasil kueri ke bucket S3 dalam format gzip terkompresi. Rata-rata, setelah pemindaian kueri selesai, Anda dapat mengharapkan latensi 60 hingga 90 detik untuk setiap GB data yang dikirim ke bucket S3. 

**Topics**
+ [Temukan hasil kueri tersimpan CloudTrail Lake Anda](#cloudtrail-find-lake-query-results)
+ [Unduh hasil kueri tersimpan CloudTrail Lake Anda](#cloudtrail-download-lake-query-results)

## Temukan hasil kueri tersimpan CloudTrail Lake Anda
<a name="cloudtrail-find-lake-query-results"></a>

CloudTrail menerbitkan hasil kueri dan menandatangani file ke bucket S3 Anda. File hasil kueri berisi output dari kueri yang disimpan dan file tanda memberikan tanda tangan dan nilai hash untuk hasil kueri. Anda dapat menggunakan file tanda untuk memvalidasi hasil kueri. Untuk informasi selengkapnya tentang memvalidasi hasil kueri, lihat[Validasi hasil kueri yang disimpan CloudTrail Lake](cloudtrail-query-results-validation.md).

Untuk mengambil hasil kueri atau file tanda tangan, Anda dapat menggunakan konsol Amazon S3, antarmuka baris perintah Amazon S3 (CLI), atau API. 

**Untuk menemukan hasil kueri dan menandatangani file dengan konsol Amazon S3**

1. Buka konsol Amazon S3.

1. Pilih ember yang Anda tentukan.

1. Arahkan melalui hierarki objek hingga Anda menemukan hasil kueri dan menandatangani file. File hasil kueri memiliki ekstensi.csv.gz dan file tanda memiliki ekstensi.json.

Anda akan menavigasi hierarki objek yang mirip dengan contoh berikut, tetapi dengan nama bucket, ID akun, tanggal, dan ID kueri yang berbeda. 

```
All Buckets
    amzn-s3-demo-bucket
        AWSLogs
            Account_ID;
                CloudTrail-Lake
                    Query
                        2022
                            06
                              20
                                Query_ID
```

## Unduh hasil kueri tersimpan CloudTrail Lake Anda
<a name="cloudtrail-download-lake-query-results"></a>

Saat Anda menyimpan hasil kueri, CloudTrail kirimkan dua jenis file ke bucket Amazon S3 Anda.
+ File tanda dalam format JSON yang dapat Anda gunakan untuk memvalidasi file hasil kueri. Berkas tanda bernama result\$1sign.json. Untuk informasi selengkapnya tentang file tanda, lihat[CloudTrail struktur file tanda tangan](cloudtrail-query-results-validation.md#cloudtrail-results-file-validation-sign-file-structure).
+ Satu atau lebih file hasil kueri dalam format CSV, yang berisi hasil dari kueri. Jumlah file hasil kueri yang dikirimkan tergantung pada ukuran total hasil kueri. Ukuran file maksimum untuk file hasil kueri adalah 1 TB. Setiap file hasil kueri diberi nama result\$1 *number* .csv.gz. Misalnya, jika ukuran total hasil kueri adalah 2 TB, Anda akan memiliki dua file hasil kueri, result\$11.csv.gz dan result\$12.csv.gz.

 CloudTrail hasil kueri dan file tanda adalah objek Amazon S3. Anda dapat menggunakan konsol S3, AWS Command Line Interface (CLI), atau S3 API untuk mengambil hasil kueri dan menandatangani file. 

 Prosedur berikut menjelaskan cara mengunduh hasil kueri dan menandatangani file dengan konsol Amazon S3. 

**Untuk mengunduh hasil kueri atau menandatangani file dengan konsol Amazon S3**

1. Buka konsol Amazon S3.

1. Pilih bucket dan pilih file yang ingin Anda unduh.  
![\[CloudTrail berkas hasil kueri\]](http://docs.aws.amazon.com/id_id/awscloudtrail/latest/userguide/images/lake_query_results_S3.png)

1. Pilih **Unduh** dan ikuti petunjuk apa pun untuk menyimpan file.
**catatan**  
Beberapa browser, seperti Chrome, secara otomatis mengekstrak file hasil kueri untuk Anda. Jika browser Anda melakukan ini untuk Anda, lewati ke langkah 5.

1. Gunakan produk seperti [7-Zip](https://www.7-zip.org/) untuk mengekstrak file hasil kueri.

1. Buka hasil kueri atau tandatangani file.

# Validasi hasil kueri yang disimpan CloudTrail Lake
<a name="cloudtrail-query-results-validation"></a>

Untuk menentukan apakah hasil kueri diubah, dihapus, atau tidak diubah setelah CloudTrail mengirimkan hasil kueri, Anda dapat menggunakan validasi integritas hasil CloudTrail kueri. Fitur ini dibangun menggunakan algoritma standar industri: SHA-256 untuk hashing dan SHA-256 dengan RSA untuk penandatanganan digital. Ini membuatnya secara komputasi tidak layak untuk memodifikasi, menghapus, atau memalsukan file hasil CloudTrail kueri tanpa deteksi. Anda dapat menggunakan baris perintah untuk memvalidasi file hasil kueri. 

## Mengapa menggunakannya?
<a name="cloudtrail-query-results-validation-use-cases"></a>

File hasil kueri yang divalidasi sangat berharga dalam penyelidikan keamanan dan forensik. Misalnya, file hasil kueri yang divalidasi memungkinkan Anda untuk menegaskan secara positif bahwa file hasil kueri itu sendiri tidak berubah. Proses validasi integritas file hasil CloudTrail kueri juga memungkinkan Anda mengetahui apakah file hasil kueri telah dihapus atau diubah. 

**Topics**
+ [Mengapa menggunakannya?](#cloudtrail-query-results-validation-use-cases)
+ [Validasi hasil kueri yang disimpan dengan AWS CLI](#cloudtrail-query-results-validation-cli)
+ [CloudTrail struktur file tanda tangan](#cloudtrail-results-file-validation-sign-file-structure)
+ [Implementasi kustom validasi integritas file hasil CloudTrail kueri](#cloudtrail-results-file-custom-validation)

## Validasi hasil kueri yang disimpan dengan AWS CLI
<a name="cloudtrail-query-results-validation-cli"></a>

Anda dapat memvalidasi integritas file hasil kueri dan menandatangani file dengan menggunakan [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudtrail/verify-query-results.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudtrail/verify-query-results.html)perintah.

### Prasyarat
<a name="cloudtrail-query-results-validation-cli-prerequisites"></a>

Untuk memvalidasi integritas hasil kueri dengan baris perintah, kondisi berikut harus dipenuhi:
+ Anda harus memiliki konektivitas online untuk AWS.
+ Anda harus menggunakan AWS CLI versi 2.
+ Untuk memvalidasi file hasil kueri dan menandatangani file secara lokal, ketentuan berikut berlaku:
  + Anda harus meletakkan file hasil kueri dan menandatangani file di jalur file yang ditentukan. Tentukan jalur file sebagai nilai untuk **--local-export-path** parameter.
  + Anda tidak boleh mengganti nama file hasil kueri dan file tanda tangan.
+ Untuk memvalidasi file hasil kueri dan menandatangani file di bucket S3, ketentuan berikut berlaku:
  + Anda tidak boleh mengganti nama file hasil kueri dan file tanda tangan.
  + Anda harus memiliki akses baca ke bucket Amazon S3 yang berisi file hasil kueri dan file tanda tangan.
  + Awalan S3 yang ditentukan harus berisi file hasil kueri dan file tanda. Tentukan awalan S3 sebagai nilai untuk parameter. **--s3-prefix**

### verify-query-results
<a name="cloudtrail-query-results-validation-cli-command"></a>

 **verify-query-results**Perintah memverifikasi nilai hash dari setiap file hasil kueri dengan membandingkan nilai dengan `fileHashValue` dalam file tanda, dan kemudian memvalidasi `hashSignature` dalam file tanda. 

Saat memverifikasi hasil kueri, Anda dapat menggunakan opsi baris **--s3-prefix** perintah **--s3-bucket** dan untuk memvalidasi file hasil kueri dan menandatangani file yang disimpan dalam bucket S3, atau Anda dapat menggunakan opsi baris **--local-export-path** perintah untuk melakukan validasi lokal dari file hasil kueri yang diunduh dan file tanda tangan.

**catatan**  
**verify-query-results**Perintahnya spesifik Wilayah. Anda harus menentukan opsi **--region** global untuk memvalidasi hasil kueri untuk spesifik Wilayah AWS.

Berikut ini adalah opsi untuk **verify-query-results** perintah.

**--s3-bucket** *<string>*  
Menentukan nama bucket S3 yang menyimpan file hasil kueri dan file tanda tangan. Anda tidak dapat menggunakan parameter ini dengan**--local-export-path**.

**--s3-prefix** *<string>*  
Menentukan jalur S3 dari folder S3 yang berisi file hasil query dan file tanda (misalnya,). `s3/path/` Anda tidak dapat menggunakan parameter ini dengan**--local-export-path**. Anda tidak perlu memberikan parameter ini jika file berada di direktori root bucket S3.

**--local-export-path** *<string>*  
Menentukan direktori lokal yang berisi file hasil query dan file tanda (misalnya,`/local/path/to/export/file/`). Anda tidak dapat menggunakan parameter ini dengan **--s3-bucket** atau**--s3-prefix**.

#### Contoh
<a name="cloudtrail-query-results-validation-cli-examples"></a>

Contoh berikut memvalidasi hasil kueri menggunakan opsi baris **--s3-prefix** perintah **--s3-bucket** dan untuk menentukan nama bucket S3 dan awalan yang berisi file hasil kueri dan file tanda.

```
aws cloudtrail verify-query-results --s3-bucket amzn-s3-demo-bucket --s3-prefix prefix --region region
```

Contoh berikut memvalidasi hasil kueri yang diunduh menggunakan opsi baris **--local-export-path** perintah untuk menentukan jalur lokal untuk file hasil kueri dan file tanda tangan. Untuk informasi selengkapnya tentang mengunduh file hasil kueri, lihat[Unduh hasil kueri tersimpan CloudTrail Lake Anda](view-download-cloudtrail-lake-query-results.md#cloudtrail-download-lake-query-results).

```
aws cloudtrail verify-query-results --local-export-path local_file_path --region region
```

#### Hasil validasi
<a name="cloudtrail-query-results-validation-cli-command-messages"></a>

Tabel berikut menjelaskan kemungkinan pesan validasi untuk file hasil kueri dan file tanda.


****  

| Jenis File | Pesan Validasi | Deskripsi | 
| --- | --- | --- | 
| Sign file | Successfully validated sign and query result files | Tanda tangan file tanda tangan valid. File hasil kueri yang direferensikannya dapat diperiksa. | 
| Query result file |  `ValidationError: "File file_name has inconsistent hash value with hash value recorded in sign file, hash value in sign file is expected_hash, but get computed_hash`  | Validasi gagal karena nilai hash untuk file hasil kueri tidak cocok dengan fileHashValue dalam file tanda. | 
| Sign file |  `ValidationError: Invalid signature in sign file`  | Validasi untuk file tanda gagal karena tanda tangan tidak valid. | 

## CloudTrail struktur file tanda tangan
<a name="cloudtrail-results-file-validation-sign-file-structure"></a>

File tanda berisi nama setiap file hasil kueri yang dikirimkan ke bucket Amazon S3 saat Anda menyimpan hasil kueri, nilai hash untuk setiap file hasil kueri, dan tanda tangan digital file. Tanda tangan digital dan nilai hash digunakan untuk memvalidasi integritas file hasil kueri dan file tanda itu sendiri. 

### Menandatangani lokasi berkas
<a name="cloudtrail-results-file-validation-sign-file-location"></a>

File tanda dikirim ke lokasi bucket Amazon S3 yang mengikuti sintaks ini.

```
s3://amzn-s3-demo-bucket/optional-prefix/AWSLogs/aws-account-ID/CloudTrail-Lake/Query/year/month/date/query-ID/result_sign.json
```

### Contoh isi file tanda tangan
<a name="cloudtrail-results-file-validation-sign-file-contents"></a>

File tanda contoh berikut berisi informasi untuk hasil kueri CloudTrail Lake.

```
{
  "version": "1.0",
  "region": "us-east-1",
  "files": [
    {
      "fileHashValue" : "de85a48b8a363033c891abd723181243620a3af3b6505f0a44db77e147e9c188",
      "fileName" : "result_1.csv.gz"
    }
  ],
  "hashAlgorithm" : "SHA-256",
  "signatureAlgorithm" : "SHA256withRSA",
  "queryCompleteTime": "2022-05-10T22:06:30Z",
  "hashSignature" : "7664652aaf1d5a17a12ba50abe6aca77c0ec76264bdf7dce71ac6d1c7781117c2a412e5820bccf473b1361306dff648feae20083ad3a27c6118172a81635829bdc7f7b795ebfabeb5259423b2fb2daa7d1d02f55791efa403dac553171e7ce5f9307d13e92eeec505da41685b4102c71ec5f1089168dacde702c8d39fed2f25e9216be5c49769b9db51037cb70a84b5712e1dffb005a74580c7fdcbb89a16b9b7674e327de4f5414701a772773a4c98eb008cca34228e294169901c735221e34cc643ead34628aabf1ba2c32e0cdf28ef403e8fe3772499ac61e21b70802dfddded9bea0ddfc3a021bf2a0b209f312ccee5a43f2b06aa35cac34638f7611e5d7",
  "publicKeyFingerprint" : "67b9fa73676d86966b449dd677850753"
}
```

### Menandatangani deskripsi bidang file
<a name="cloudtrail-results-file-validation-sign-file-descriptions"></a>

Berikut ini adalah deskripsi untuk setiap bidang dalam file tanda: 

`version`  
Versi file tanda. 

`region`  
Wilayah untuk AWS akun yang digunakan untuk menyimpan hasil kueri. 

`files.fileHashValue`  
Nilai hash yang dikodekan heksadesimal dari konten file hasil kueri terkompresi.

`files.fileName`  
Nama file hasil query. 

`hashAlgorithm`  
Algoritma hash digunakan untuk hash file hasil query. 

`signatureAlgorithm`  
Algoritma yang digunakan untuk menandatangani file. 

`queryCompleteTime`  
Menunjukkan saat CloudTrail mengirimkan hasil kueri ke bucket S3. Anda dapat menggunakan nilai ini untuk menemukan kunci publik.

`hashSignature`  
Tanda tangan hash untuk file tersebut.

`publicKeyFingerprint`  
Sidik jari heksadesimal yang dikodekan dari kunci publik yang digunakan untuk menandatangani file.

## Implementasi kustom validasi integritas file hasil CloudTrail kueri
<a name="cloudtrail-results-file-custom-validation"></a>

Karena CloudTrail menggunakan standar industri, algoritma kriptografi yang tersedia secara terbuka dan fungsi hash, Anda dapat membuat alat Anda sendiri untuk memvalidasi integritas file hasil kueri. CloudTrail Saat Anda menyimpan hasil kueri ke bucket Amazon S3, kirimkan CloudTrail file tanda ke bucket S3 Anda. Anda dapat menerapkan solusi validasi Anda sendiri untuk memvalidasi tanda tangan dan file hasil kueri. Untuk informasi selengkapnya tentang file tanda, lihat[CloudTrail struktur file tanda tangan](#cloudtrail-results-file-validation-sign-file-structure). 

Topik ini menjelaskan bagaimana file tanda ditandatangani, dan kemudian merinci langkah-langkah yang perlu Anda ambil untuk menerapkan solusi yang memvalidasi file tanda dan file hasil kueri yang direferensikan oleh file tanda tangan. 

### Memahami bagaimana file CloudTrail tanda ditandatangani
<a name="cloudtrail-results-file-custom-validation-how-cloudtrail-sign-files-are-signed"></a>

CloudTrail file tanda ditandatangani dengan tanda tangan digital RSA. Untuk setiap file tanda, CloudTrail lakukan hal berikut: 

1. Membuat daftar hash yang berisi nilai hash untuk setiap file hasil query.

1. Mendapat kunci pribadi yang unik untuk Wilayah.

1. Melewati hash SHA-256 dari string dan kunci pribadi ke algoritma penandatanganan RSA, yang menghasilkan tanda tangan digital.

1. Mengkodekan kode byte tanda tangan ke dalam format heksadesimal.

1. Menempatkan tanda tangan digital ke dalam file tanda.

#### Isi string penandatanganan data
<a name="cloudtrail-results-file-custom-validation-data-signing-string-summary"></a>

String penandatanganan data terdiri dari nilai hash untuk setiap file hasil kueri yang dipisahkan oleh spasi. File tanda mencantumkan `fileHashValue` untuk setiap file hasil kueri.

### Langkah-langkah implementasi validasi kustom
<a name="cloudtrail-results-file-custom-validation-steps"></a>

Saat menerapkan solusi validasi kustom, Anda perlu memvalidasi file tanda dan file hasil kueri yang dirujuk. 

#### Validasi file tanda
<a name="cloudtrail-results-file-custom-validation-steps-sign"></a>

Untuk memvalidasi file tanda tangan, Anda memerlukan tanda tangannya, kunci publik yang kunci pribadinya digunakan untuk menandatanganinya, dan string penandatanganan data yang Anda hitung. 

1. Dapatkan file tanda.

1. Verifikasi bahwa file tanda telah diambil dari lokasi aslinya. 

1. Dapatkan tanda tangan heksadesimal yang dikodekan dari file tanda.

1. Dapatkan sidik jari yang dikodekan heksadesimal dari kunci publik yang kunci pribadinya digunakan untuk menandatangani file tanda.

1. Ambil kunci publik untuk rentang waktu yang sesuai dengan `queryCompleteTime` dalam file tanda. Untuk rentang waktu, pilih yang `StartTime` lebih awal dari `queryCompleteTime` dan yang lebih `EndTime` lambat dari`queryCompleteTime`.

1. Dari antara kunci publik yang diambil, pilih kunci publik yang sidik jarinya cocok dengan `publicKeyFingerprint` nilai dalam file tanda.

1. Menggunakan daftar hash yang berisi nilai hash untuk setiap file hasil kueri yang dipisahkan oleh spasi, buat ulang string penandatanganan data yang digunakan untuk memverifikasi tanda tangan file. File tanda mencantumkan `fileHashValue` untuk setiap file hasil kueri.

   Misalnya, jika `files` array file tanda Anda berisi tiga file hasil kueri berikut, daftar hash Anda adalah “aaa bbb ccc”.

   ```
   “files": [ 
      { 
           "fileHashValue" : “aaa”, 
           "fileName" : "result_1.csv.gz" 
      },
      {       
           "fileHashValue" : “bbb”,       
           "fileName" : "result_2.csv.gz"      
      },
      { 
           "fileHashValue" : “ccc”,       
           "fileName" : "result_3.csv.gz" 
      }
   ],
   ```

1. Validasi tanda tangan dengan meneruskan hash SHA-256 dari string, kunci publik, dan tanda tangan sebagai parameter ke algoritma verifikasi tanda tangan RSA. Jika hasilnya benar, file tanda valid. 

#### Validasi file hasil kueri
<a name="cloudtrail-results-file-custom-validation-steps-logs"></a>

Jika file tanda valid, validasi file hasil kueri yang menjadi referensi file tanda. Untuk memvalidasi integritas file hasil kueri, hitung nilai hash SHA-256 pada konten terkompresi dan bandingkan hasilnya dengan file hasil kueri yang `fileHashValue` direkam dalam file tanda. Jika hash cocok, file hasil kueri valid.

Bagian berikut menjelaskan proses validasi secara rinci.

#### A. Dapatkan berkas tanda
<a name="cloudtrail-results-file-custom-validation-steps-get-the-sign-file"></a>

Langkah pertama adalah mendapatkan file tanda dan mendapatkan sidik jari kunci publik.

1. Dapatkan file tanda dari bucket Amazon S3 Anda untuk hasil kueri yang ingin Anda validasi. 

1. Selanjutnya, dapatkan `hashSignature` nilai dari file tanda.

1. Dalam file tanda, dapatkan sidik jari kunci publik yang kunci pribadinya digunakan untuk menandatangani file dari `publicKeyFingerprint` bidang. 

#### B. Ambil kunci publik untuk memvalidasi file tanda
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key"></a>

Untuk mendapatkan kunci publik untuk memvalidasi file tanda, Anda dapat menggunakan salah satu AWS CLI atau CloudTrail API. Dalam kedua kasus, Anda menentukan rentang waktu (yaitu, waktu mulai dan waktu akhir) untuk file tanda yang ingin Anda validasi. Gunakan rentang waktu yang sesuai dengan `queryCompleteTime` dalam file tanda. Satu atau beberapa kunci publik dapat dikembalikan untuk rentang waktu yang Anda tentukan. Kunci yang dikembalikan mungkin memiliki rentang waktu validitas yang tumpang tindih.

**catatan**  
Karena CloudTrail menggunakan pasangan private/public kunci yang berbeda per Wilayah, setiap file tanda ditandatangani dengan kunci pribadi yang unik untuk Wilayahnya. Oleh karena itu, ketika Anda memvalidasi file tanda dari Wilayah tertentu, Anda harus mengambil kunci publiknya dari Wilayah yang sama.

##### Gunakan tombol AWS CLI untuk mengambil kunci publik
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key-cli"></a>

Untuk mengambil kunci publik untuk file tanda dengan menggunakan AWS CLI, gunakan `cloudtrail list-public-keys` perintah. Perintah memiliki format berikut: 

 `aws cloudtrail list-public-keys [--start-time <start-time>] [--end-time <end-time>]` 

Parameter waktu mulai dan akhir waktu adalah stempel waktu UTC dan bersifat opsional. Jika tidak ditentukan, waktu saat ini digunakan, dan kunci publik atau kunci yang saat ini aktif dikembalikan.

 **Sampel Respon** 

Responsnya akan berupa daftar objek JSON yang mewakili kunci (atau kunci) yang dikembalikan: 

##### Gunakan CloudTrail API untuk mengambil kunci publik
<a name="cloudtrail-results-file-custom-validation-steps-retrieve-public-key-api"></a>

Untuk mengambil kunci publik untuk file tanda menggunakan CloudTrail API, teruskan nilai waktu mulai dan waktu akhir ke `ListPublicKeys` API. `ListPublicKeys`API mengembalikan kunci publik yang kunci pribadinya digunakan untuk menandatangani file dalam rentang waktu yang ditentukan. Untuk setiap kunci publik, API juga mengembalikan sidik jari yang sesuai.

##### `ListPublicKeys`
<a name="cloudtrail-results-file-custom-validation-steps-list-public-keys"></a>

Bagian ini menjelaskan parameter permintaan dan elemen respons untuk `ListPublicKeys` API.

**catatan**  
Pengkodean untuk bidang biner `ListPublicKeys` untuk dapat berubah. 

 **Parameter Permintaan** 


****  

| Nama | Deskripsi | 
| --- | --- | 
|  StartTime  |  Secara opsional menentukan, di UTC, awal rentang waktu untuk mencari kunci publik untuk CloudTrail file tanda. Jika tidak StartTime ditentukan, waktu saat ini digunakan, dan kunci publik saat ini dikembalikan.  Jenis: DateTime   | 
|  EndTime  |  Secara opsional menentukan, di UTC, akhir rentang waktu untuk mencari kunci publik untuk file tanda tangan. CloudTrail Jika tidak EndTime ditentukan, waktu saat ini digunakan.  Jenis: DateTime   | 

 **Elemen Respon** 

`PublicKeyList`, array `PublicKey` objek yang berisi: 


****  

|  |  | 
| --- |--- |
|  Nama  |  Deskripsi  | 
|  Value  |  DER menyandikan nilai kunci publik dalam format PKCS \$11.  Jenis: Gumpalan   | 
|  ValidityStartTime  |  Waktu mulai validitas kunci publik. Jenis: DateTime   | 
|  ValidityEndTime  |  Waktu berakhirnya validitas kunci publik. Jenis: DateTime   | 
|  Fingerprint  |  Sidik jari kunci publik. Sidik jari dapat digunakan untuk mengidentifikasi kunci publik yang harus Anda gunakan untuk memvalidasi file tanda. Tipe: String   | 

#### C. Pilih kunci publik yang akan digunakan untuk validasi
<a name="cloudtrail-results-file-custom-validation-steps-choose-public-key"></a>

Dari antara kunci publik yang diambil oleh `list-public-keys` atau`ListPublicKeys`, pilih kunci publik yang sidik jarinya cocok dengan sidik jari yang direkam di `publicKeyFingerprint` bidang file tanda. Ini adalah kunci publik yang akan Anda gunakan untuk memvalidasi file tanda. 

#### D. Buat ulang string penandatanganan data
<a name="cloudtrail-results-file-custom-validation-steps-recreate-data-signing-string"></a>

Sekarang setelah Anda memiliki tanda tangan dari file tanda dan kunci publik terkait, Anda perlu menghitung string penandatanganan data. Setelah menghitung string penandatanganan data, Anda akan memiliki input yang diperlukan untuk memverifikasi tanda tangan.

String penandatanganan data terdiri dari nilai hash untuk setiap file hasil kueri yang dipisahkan oleh spasi. Setelah Anda membuat ulang string ini, Anda dapat memvalidasi file tanda.

#### E. Validasi file tanda
<a name="cloudtrail-results-file-custom-validation-steps-validate-sign-file"></a>

Teruskan string penandatanganan data yang dibuat ulang, tanda tangan digital, dan kunci publik ke algoritma verifikasi tanda tangan RSA. Jika output benar, tanda tangan dari file tanda diverifikasi dan file tanda valid. 

#### F. Validasi file hasil query
<a name="cloudtrail-results-file-custom-validation-steps-validate-log-files"></a>

Setelah Anda memvalidasi file tanda, Anda dapat memvalidasi file hasil kueri yang direferensikan. File tanda berisi hash SHA-256 dari file hasil kueri. Jika salah satu file hasil kueri diubah setelah CloudTrail dikirimkan, hash SHA-256 akan berubah, dan tanda tangan file tanda tidak akan cocok. 

Gunakan prosedur berikut untuk memvalidasi file hasil kueri yang tercantum dalam `files` array file tanda.

1. Ambil hash asli file dari `files.fileHashValue` bidang di file tanda.

1. Hash konten terkompresi dari file hasil kueri dengan algoritma hashing yang ditentukan dalam. `hashAlgorithm`

1. Bandingkan nilai hash yang Anda buat untuk setiap file hasil kueri dengan file tanda `files.fileHashValue` di. Jika hash cocok, file hasil kueri valid.

### Memvalidasi tanda tangan dan file hasil kueri secara offline
<a name="cloudtrail-results-file-custom-validation-offline"></a>

Saat memvalidasi file hasil tanda dan kueri secara offline, Anda biasanya dapat mengikuti prosedur yang dijelaskan di bagian sebelumnya. Namun, Anda harus mempertimbangkan informasi berikut tentang kunci publik.

#### Kunci publik
<a name="cloudtrail-results-file-custom-validation-offline-public-keys"></a>

Untuk memvalidasi offline, kunci publik yang Anda butuhkan untuk memvalidasi file hasil kueri dalam rentang waktu tertentu harus diperoleh terlebih dahulu secara online (dengan menelepon`ListPublicKeys`, misalnya) dan kemudian disimpan secara offline. Langkah ini harus diulang setiap kali Anda ingin memvalidasi file tambahan di luar rentang waktu awal yang Anda tentukan.

### Contoh cuplikan validasi
<a name="cloudtrail-results-file-custom-validation-sample-code"></a>

Cuplikan sampel berikut menyediakan kode kerangka untuk memvalidasi file hasil CloudTrail tanda dan kueri. Kode kerangka online/offline agnostik; artinya, terserah Anda untuk memutuskan apakah akan menerapkannya dengan atau tanpa konektivitas online ke. AWS Implementasi yang disarankan menggunakan [Java Cryptography Extension (JCE)](https://en.wikipedia.org/wiki/Java_Cryptography_Extension) dan [Bouncy Castle sebagai penyedia keamanan](https://www.bouncycastle.org/). 

Cuplikan sampel menunjukkan:
+ Cara membuat string penandatanganan data yang digunakan untuk memvalidasi tanda tangan file.
+ Cara memverifikasi tanda tangan file tanda tangan.
+ Cara menghitung nilai hash untuk file hasil kueri dan membandingkannya dengan yang `fileHashValue` tercantum dalam file tanda untuk memverifikasi keaslian file hasil kueri.

```
import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.pkcs.RSAPublicKey;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.json.JSONArray;
import org.json.JSONObject;
 
import java.security.KeyFactory;
import java.security.MessageDigest;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
 
public class SignFileValidationSampleCode {
 
    public void validateSignFile(String s3Bucket, String s3PrefixPath) throws Exception {
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
 
        // Load the sign file from S3 (using Amazon S3 Client) or from your local copy
        JSONObject signFile = loadSignFileToMemory(s3Bucket, String.format("%s/%s", s3PrefixPath, "result_sign.json"));
 
        // Using the Bouncy Castle provider as a JCE security provider - http://www.bouncycastle.org/
        Security.addProvider(new BouncyCastleProvider());
 
        List<String> hashList = new ArrayList<>();
 
        JSONArray jsonArray = signFile.getJSONArray("files");
 
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject file = jsonArray.getJSONObject(i);
            String fileS3ObjectKey = String.format("%s/%s", s3PrefixPath, file.getString("fileName"));
 
            // Load the export file from S3 (using Amazon S3 Client) or from your local copy
            byte[] exportFileContent = loadCompressedExportFileInMemory(s3Bucket, fileS3ObjectKey);
            messageDigest.update(exportFileContent);
            byte[] exportFileHash = messageDigest.digest();
            messageDigest.reset();
            byte[] expectedHash = Hex.decodeHex(file.getString("fileHashValue"));
 
            boolean signaturesMatch = Arrays.equals(expectedHash, exportFileHash);
            if (!signaturesMatch) {
                System.err.println(String.format("Export file: %s/%s hash doesn't match.\tExpected: %s Actual: %s",
                        s3Bucket, fileS3ObjectKey,
                        Hex.encodeHexString(expectedHash), Hex.encodeHexString(exportFileHash)));
            } else {
                System.out.println(String.format("Export file: %s/%s hash match",
                        s3Bucket, fileS3ObjectKey));
            }
 
            hashList.add(file.getString("fileHashValue"));
        }
        String hashListString = hashList.stream().collect(Collectors.joining(" "));
 
        /*
            NOTE:
            To find the right public key to verify the signature, call CloudTrail ListPublicKey API to get a list
            of public keys, then match by the publicKeyFingerprint in the sign file. Also, the public key bytes
            returned from ListPublicKey API are DER encoded in PKCS#1 format:
 
            PublicKeyInfo ::= SEQUENCE {
                algorithm       AlgorithmIdentifier,
                PublicKey       BIT STRING
            }
 
            AlgorithmIdentifier ::= SEQUENCE {
                algorithm       OBJECT IDENTIFIER,
                parameters      ANY DEFINED BY algorithm OPTIONAL
            }
        */
        byte[] pkcs1PublicKeyBytes = getPublicKey(signFile.getString("queryCompleteTime"),
                signFile.getString("publicKeyFingerprint"));
        byte[] signatureContent = Hex.decodeHex(signFile.getString("hashSignature"));
 
        // Transform the PKCS#1 formatted public key to x.509 format.
        RSAPublicKey rsaPublicKey = RSAPublicKey.getInstance(pkcs1PublicKeyBytes);
        AlgorithmIdentifier rsaEncryption = new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, null);
        SubjectPublicKeyInfo publicKeyInfo = new SubjectPublicKeyInfo(rsaEncryption, rsaPublicKey);
 
        // Create the PublicKey object needed for the signature validation
        PublicKey publicKey = KeyFactory.getInstance("RSA", "BC")
                .generatePublic(new X509EncodedKeySpec(publicKeyInfo.getEncoded()));
 
        // Verify signature
        Signature signature = Signature.getInstance("SHA256withRSA", "BC");
        signature.initVerify(publicKey);
        signature.update(hashListString.getBytes("UTF-8"));
 
        if (signature.verify(signatureContent)) {
            System.out.println("Sign file signature is valid.");
        } else {
            System.err.println("Sign file signature failed validation.");
        }
 
        System.out.println("Sign file validation completed.");
    }
}
```

# Optimalkan kueri CloudTrail Danau
<a name="lake-queries-optimization"></a>

Halaman ini memberikan panduan tentang cara mengoptimalkan kueri CloudTrail Danau untuk meningkatkan kinerja dan keandalan. Ini mencakup teknik pengoptimalan khusus serta solusi untuk kegagalan kueri umum.

**Topics**
+ [Rekomendasi untuk mengoptimalkan kueri](#lake-queries-tuning)
+ [Solusi untuk kegagalan kueri](#lake-queries-troubleshooting)

## Rekomendasi untuk mengoptimalkan kueri
<a name="lake-queries-tuning"></a>

Ikuti rekomendasi di bagian ini untuk mengoptimalkan kueri Anda.

**Topics**
+ [Optimalkan agregasi](#query-optimization-aggregation)
+ [Gunakan teknik aproksimasi](#query-optimization-approximation)
+ [Batasi hasil kueri](#query-optimization-limit)
+ [Optimalkan kueri LIKE](#query-optimization-like)
+ [Gunakan `UNION ALL` sebagai pengganti `UNION`](#query-optimization-union)
+ [Sertakan hanya kolom yang diperlukan](#query-optimization-reqcolumns)
+ [Kurangi ruang lingkup fungsi jendela](#query-optimization-windows)

### Optimalkan agregasi
<a name="query-optimization-aggregation"></a>

Mengecualikan kolom redundan dalam `GROUP BY` klausa dapat meningkatkan kinerja karena lebih sedikit kolom membutuhkan lebih sedikit memori. Misalnya, dalam query berikut, kita dapat menggunakan `arbitrary` fungsi pada kolom redundan seperti `eventType` untuk meningkatkan kinerja. `arbitrary`Fungsi pada `eventType` digunakan untuk memilih nilai bidang secara acak dari grup karena nilainya sama dan tidak perlu disertakan dalam `GROUP BY` klausa.

```
SELECT eventName, eventSource, arbitrary(eventType), count(*) 
FROM $EDS_ID 
GROUP BY eventName, eventSource
```

Dimungkinkan untuk meningkatkan kinerja `GROUP BY` fungsi dengan mengurutkan daftar bidang dalam urutan penurunan jumlah nilai uniknya (kardinalitas). `GROUP BY` Misalnya, saat mendapatkan jumlah peristiwa dari suatu tipe di masing-masing Wilayah AWS, kinerja dapat ditingkatkan dengan menggunakan `awsRegion` urutan`eventName`, dalam `GROUP BY` fungsi alih-alih`awsRegion`, `eventName` karena ada nilai yang lebih unik `eventName` daripada yang ada`awsRegion`.

```
SELECT eventName, awsRegion, count(*) 
FROM $EDS_ID 
GROUP BY eventName, awsRegion
```

### Gunakan teknik aproksimasi
<a name="query-optimization-approximation"></a>

Setiap kali nilai yang tepat tidak diperlukan untuk menghitung nilai yang berbeda, gunakan [fungsi agregat perkiraan](https://trino.io/docs/current/functions/aggregate.html#approximate-aggregate-functions) untuk menemukan nilai yang paling sering. Misalnya, [https://trino.io/docs/current/functions/aggregate.html#approx_distinct](https://trino.io/docs/current/functions/aggregate.html#approx_distinct)menggunakan memori jauh lebih sedikit dan berjalan lebih cepat daripada `COUNT(DISTINCT fieldName)` operasi.

### Batasi hasil kueri
<a name="query-optimization-limit"></a>

Jika hanya respons sampel yang diperlukan untuk kueri, batasi hasilnya ke sejumlah kecil baris dengan menggunakan `LIMIT` kondisi. Jika tidak, kueri akan mengembalikan hasil yang besar dan membutuhkan lebih banyak waktu untuk eksekusi kueri.

Menggunakan `LIMIT` bersama dengan `ORDER BY` dapat memberikan hasil untuk catatan N atas atau bawah lebih cepat karena mengurangi jumlah memori yang dibutuhkan dan waktu yang dibutuhkan untuk mengurutkan.

```
SELECT * FROM $EDS_ID
ORDER BY eventTime 
LIMIT 100;
```

### Optimalkan kueri LIKE
<a name="query-optimization-like"></a>

Anda dapat menggunakan `LIKE` untuk menemukan string yang cocok, tetapi dengan string panjang, ini adalah komputasi intensif. [https://trino.io/docs/current/functions/regexp.html#regexp_like](https://trino.io/docs/current/functions/regexp.html#regexp_like)Fungsi ini dalam banyak kasus merupakan alternatif yang lebih cepat.

Seringkali, Anda dapat mengoptimalkan pencarian dengan menambatkan substring yang Anda cari. Misalnya, jika Anda mencari awalan, lebih baik menggunakan '`substr`%' daripada '% `substr` %' dengan `LIKE` operator dan '^`substr`' dengan fungsinya. `regexp_like`

### Gunakan `UNION ALL` sebagai pengganti `UNION`
<a name="query-optimization-union"></a>

`UNION ALL`dan `UNION` dua cara untuk menggabungkan hasil dari dua kueri menjadi satu hasil tetapi `UNION` menghapus duplikat. `UNION`perlu memproses semua catatan dan menemukan duplikat, yang merupakan memori dan komputasi intensif, tetapi `UNION ALL` merupakan operasi yang relatif cepat. Kecuali Anda perlu menghapus duplikat catatan, gunakan `UNION ALL` untuk kinerja terbaik.

### Sertakan hanya kolom yang diperlukan
<a name="query-optimization-reqcolumns"></a>

Jika Anda tidak memerlukan kolom, jangan sertakan dalam kueri Anda. Semakin sedikit data yang harus diproses oleh kueri, semakin cepat ia akan berjalan. Jika Anda memiliki kueri yang dilakukan `SELECT *` di kueri terluar, Anda harus mengubah `*` ke daftar kolom yang Anda butuhkan.

`ORDER BY`Klausa mengembalikan hasil query dalam urutan diurutkan. Saat menyortir jumlah data yang lebih besar, jika memori yang diperlukan tidak tersedia, hasil yang diurutkan menengah ditulis ke disk yang dapat memperlambat eksekusi kueri. Jika Anda tidak benar-benar membutuhkan hasil Anda untuk diurutkan, hindari menambahkan `ORDER BY` klausa. Selain itu, hindari `ORDER BY` menambahkan kueri batin jika tidak benar-benar diperlukan. 

### Kurangi ruang lingkup fungsi jendela
<a name="query-optimization-windows"></a>

[Fungsi jendela](https://trino.io/docs/current/functions/window.html) menyimpan semua catatan yang mereka operasikan dalam memori untuk menghitung hasilnya. Ketika jendela sangat besar, fungsi jendela bisa kehabisan memori. Untuk memastikan bahwa kueri berjalan dalam batas memori yang tersedia, kurangi ukuran jendela tempat fungsi jendela Anda beroperasi dengan menambahkan `PARTITION BY` klausa.

Terkadang kueri dengan fungsi jendela dapat ditulis ulang tanpa fungsi jendela. Misalnya, alih-alih menggunakan `row_number` atau`rank`, Anda dapat menggunakan fungsi agregat seperti [https://trino.io/docs/current/functions/aggregate.html#max_by](https://trino.io/docs/current/functions/aggregate.html#max_by)atau [https://trino.io/docs/current/functions/aggregate.html#min_by](https://trino.io/docs/current/functions/aggregate.html#min_by).

Kueri berikut menemukan alias yang terakhir ditugaskan ke setiap kunci KMS menggunakan. `max_by`

```
SELECT element_at(requestParameters, 'targetKeyId') as keyId, 
max_by(element_at(requestParameters, 'aliasName'), eventTime) as mostRecentAlias 
FROM $EDS_ID 
WHERE eventsource = 'kms.amazonaws.com' 
AND eventName in ('CreateAlias', 'UpdateAlias') 
AND eventTime > DATE_ADD('week', -1, CURRENT_TIMESTAMP) 
GROUP BY element_at(requestParameters, 'targetKeyId')
```

Dalam hal ini, `max_by` fungsi mengembalikan alias untuk catatan dengan waktu acara terbaru dalam grup. Kueri ini berjalan lebih cepat dan menggunakan lebih sedikit memori daripada kueri setara dengan fungsi jendela.

## Solusi untuk kegagalan kueri
<a name="lake-queries-troubleshooting"></a>

Bagian ini menyediakan solusi untuk kegagalan kueri umum.

**Topics**
+ [Kueri gagal karena responsnya terlalu besar](#large-responses)
+ [Kueri gagal karena kehabisan sumber daya](#exhausted-resources)

### Kueri gagal karena responsnya terlalu besar
<a name="large-responses"></a>

Kueri dapat gagal jika responsnya terlalu besar sehingga menghasilkan pesan`Query response is too large`. Jika ini terjadi, Anda dapat mengurangi ruang lingkup agregasi.

Fungsi agregasi seperti `array_agg` dapat menyebabkan setidaknya satu baris dalam respons kueri menjadi sangat besar menyebabkan kueri gagal. Misalnya, menggunakan `array_agg(eventName)` instead of `array_agg(DISTINCT eventName)` akan meningkatkan ukuran respons banyak karena nama acara yang digandakan dari CloudTrail peristiwa yang dipilih.

### Kueri gagal karena kehabisan sumber daya
<a name="exhausted-resources"></a>

Jika memori yang cukup tidak tersedia selama pelaksanaan operasi intensif memori seperti gabungan, agregasi dan fungsi jendela, hasil antara tumpah ke disk, tetapi tumpahan memperlambat eksekusi kueri dan tidak cukup untuk mencegah kueri gagal. `Query exhausted resources at this scale factor` Ini dapat diperbaiki dengan mencoba kembali kueri.

Jika kesalahan di atas tetap ada bahkan setelah mengoptimalkan kueri, Anda dapat mencatat kueri menggunakan peristiwa dan menjalankan kueri beberapa kali dalam interval yang lebih kecil dari rentang waktu kueri asli. `eventTime`

# Jalankan dan kelola kueri CloudTrail Lake dengan AWS CLI
<a name="lake-queries-cli"></a>

Anda dapat menggunakan AWS CLI untuk menjalankan dan mengelola kueri CloudTrail Danau Anda. Saat menggunakan AWS CLI, ingatlah bahwa perintah Anda berjalan di Wilayah AWS konfigurasi untuk profil Anda. Jika Anda ingin menjalankan perintah di Wilayah yang berbeda, ubah Wilayah default untuk profil Anda, atau gunakan parameter **--region** bersama perintah tersebut.

## Perintah yang tersedia untuk kueri CloudTrail Lake
<a name="lake-queries-cli-commands"></a>

Perintah untuk menjalankan dan mengelola kueri di CloudTrail Lake meliputi:
+ `start-query`untuk menjalankan kueri.
+ `describe-query`untuk mengembalikan metadata tentang kueri.
+ `generate-query`untuk menghasilkan kueri dari prompt bahasa Inggris. Untuk informasi selengkapnya, lihat [Buat kueri CloudTrail Danau dari petunjuk bahasa alami](lake-query-generator.md).
+ `get-query-results`untuk mengembalikan hasil kueri untuk ID kueri yang ditentukan.
+ `list-queries`untuk mendapatkan kueri daftar untuk penyimpanan data peristiwa tertentu.
+ `cancel-query`untuk membatalkan kueri yang sedang berjalan.

Untuk daftar perintah yang tersedia untuk penyimpanan data acara CloudTrail Lake, lihat[Perintah yang tersedia untuk penyimpanan data acara](lake-eds-cli.md#lake-eds-cli-commands).

Untuk daftar perintah yang tersedia untuk dasbor CloudTrail Lake, lihat[Perintah yang tersedia untuk dasbor](lake-dashboard-cli.md#lake-dashboard-cli-commands).

Untuk daftar perintah yang tersedia untuk integrasi CloudTrail Lake, lihat[Perintah yang tersedia untuk integrasi CloudTrail Lake](lake-integrations-cli.md#lake-integrations-cli-commands).

## Menghasilkan kueri dari prompt bahasa alami dengan AWS CLI
<a name="lake-cli-generate-query"></a>

Jalankan `generate-query` perintah untuk menghasilkan kueri dari prompt bahasa Inggris. Untuk`--event-data-stores`, berikan ARN (atau akhiran ID ARN) dari penyimpanan data acara yang ingin Anda kueri. Anda hanya dapat menentukan satu penyimpanan data acara. Untuk`--prompt`, berikan prompt dalam bahasa Inggris.

```
aws cloudtrail generate-query 
--event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \
--prompt "Show me all console login events for the past week?"
```

Jika berhasil, perintah mengeluarkan pernyataan SQL dan memberikan `QueryAlias` yang akan Anda gunakan dengan `start-query` perintah untuk menjalankan kueri terhadap penyimpanan data acara Anda.

```
{
  "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'",
  "QueryAlias": "AWSCloudTrail-UUID"
}
```

## Mulai kueri dengan AWS CLI
<a name="lake-cli-start-query"></a>

 AWS CLI **start-query**Perintah contoh berikut menjalankan kueri pada penyimpanan data peristiwa yang ditentukan sebagai ID dalam pernyataan kueri dan mengirimkan hasil kueri ke bucket S3 tertentu. `--query-statement`Parameter menyediakan query SQL, terlampir dalam tanda kutip tunggal. Parameter opsional termasuk`--delivery-s3-uri`, untuk mengirimkan hasil kueri ke bucket S3 tertentu. Untuk informasi selengkapnya tentang bahasa kueri yang dapat Anda gunakan di CloudTrail Lake, lihat[CloudTrail Kendala Lake SQL](query-limitations.md).

```
aws cloudtrail start-query
--query-statement 'SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10'
--delivery-s3-uri "s3://aws-cloudtrail-lake-query-results-123456789012-us-east-1"
```

Responsnya adalah `QueryId` string. Untuk mendapatkan status kueri, jalankan **describe-query** menggunakan `QueryId` nilai yang dikembalikan oleh**start-query**. Jika kueri berhasil, Anda dapat menjalankan **get-query-results** untuk mendapatkan hasil.

**Keluaran**

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE"
}
```

**catatan**  
Kueri yang berjalan lebih dari satu jam mungkin habis. Anda masih bisa mendapatkan sebagian hasil yang diproses sebelum waktu kueri habis.  
Jika Anda mengirimkan hasil kueri ke bucket S3 menggunakan `--delivery-s3-uri` parameter opsional, kebijakan bucket harus memberikan CloudTrail izin untuk mengirimkan hasil kueri ke bucket. Untuk informasi tentang mengedit kebijakan bucket secara manual, lihat[Kebijakan bucket Amazon S3 untuk hasil kueri CloudTrail Lake](s3-bucket-policy-lake-query-results.md).

## Dapatkan metadata tentang kueri dengan AWS CLI
<a name="lake-cli-describe-query"></a>

Contoh AWS CLI **describe-query** perintah berikut mendapatkan metadata tentang kueri, termasuk waktu menjalankan kueri dalam milidetik, jumlah peristiwa yang dipindai dan dicocokkan, jumlah total byte yang dipindai, dan status kueri. `BytesScanned`Nilai cocok dengan jumlah byte yang akun Anda ditagih untuk kueri, kecuali kueri masih berjalan. Jika hasil kueri dikirim ke bucket S3, respons juga menyediakan URI S3 dan status pengiriman.

Anda harus menentukan nilai untuk parameter `--query-id` atau `--query-alias` parameter. Menentukan `--query-alias` parameter mengembalikan informasi tentang query terakhir yang dijalankan untuk alias. 

```
aws cloudtrail describe-query --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

Berikut ini adalah contoh respons.

```
{
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
    "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", 
    "QueryStatus": "RUNNING",
    "QueryStatistics": {
        "EventsMatched": 10,
        "EventsScanned": 1000,
        "BytesScanned": 35059,
        "ExecutionTimeInMillis": 3821,
        "CreationTime": "1598911142"
    }
}
```

## Dapatkan hasil kueri dengan AWS CLI
<a name="lake-cli-get-query-results"></a>

Contoh AWS CLI **get-query-results** perintah berikut mendapatkan hasil data peristiwa dari query. Anda harus menentukan yang `--query-id` dikembalikan oleh **start-query** perintah. `BytesScanned`Nilai cocok dengan jumlah byte yang akun Anda ditagih untuk kueri, kecuali kueri masih berjalan. Parameter opsional termasuk`--max-query-results`, untuk menentukan jumlah maksimum hasil yang Anda inginkan perintah untuk kembali pada satu halaman. Jika ada lebih banyak hasil daripada `--max-query-results` nilai yang Anda tentukan, jalankan perintah lagi dengan menambahkan `NextToken` nilai yang dikembalikan untuk mendapatkan halaman hasil berikutnya.

```
aws cloudtrail get-query-results
--query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

**Keluaran**

```
{
    "QueryStatus": "RUNNING",
    "QueryStatistics": {
        "ResultsCount": 244,
        "TotalResultsCount": 1582,
        "BytesScanned":27044
    },
    "QueryResults": [
      {
        "key": "eventName",
        "value": "StartQuery",
      }
   ],
    "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
    "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10",
    "NextToken": "20add42078135EXAMPLE"
}
```

## Cantumkan semua kueri di toko data acara dengan AWS CLI
<a name="lake-cli-list-queries"></a>

Contoh AWS CLI **list-queries** perintah berikut mengembalikan daftar query dan status query pada penyimpanan data peristiwa tertentu selama tujuh hari terakhir. Anda harus menentukan ARN atau akhiran ID dari nilai ARN untuk. `--event-data-store` Secara opsional, untuk mempersingkat daftar hasil, Anda dapat menentukan rentang waktu, diformat sebagai stempel waktu, dengan menambahkan `--start-time` dan `--end-time` parameter, dan nilai. `--query-status` Nilai yang valid untuk `QueryStatus` include`QUEUED`,`RUNNING`,`FINISHED`,`FAILED`, atau`CANCELLED`.

**list-queries**juga memiliki parameter pagination opsional. Gunakan `--max-results` untuk menentukan jumlah maksimum hasil yang Anda inginkan perintah untuk kembali pada satu halaman. Jika ada lebih banyak hasil daripada `--max-results` nilai yang Anda tentukan, jalankan perintah lagi dengan menambahkan `NextToken` nilai yang dikembalikan untuk mendapatkan halaman hasil berikutnya.

```
aws cloudtrail list-queries
--event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE
--query-status CANCELLED
--start-time 1598384589
--end-time 1598384602
--max-results 10
```

**Keluaran**

```
{
    "Queries": [
        {
          "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", 
          "QueryStatus": "CANCELLED",
          "CreationTime": 1598911142
        },
        {
          "QueryId": "EXAMPLE2-4e89-9230-2127-5dr3aEXAMPLE", 
          "QueryStatus": "CANCELLED",
          "CreationTime": 1598296624
        }
     ],
    "NextToken": "20add42078135EXAMPLE"
}
```

## Batalkan kueri yang sedang berjalan dengan AWS CLI
<a name="lake-cli-cancel-query"></a>

Contoh AWS CLI **cancel-query** perintah berikut membatalkan query dengan status. `RUNNING` Anda harus menentukan nilai untuk `--query-id`. Saat Anda menjalankan**cancel-query**, status kueri mungkin akan ditampilkan `CANCELLED` meskipun **cancel-query** operasi belum selesai.

**catatan**  
Kueri yang dibatalkan dapat dikenakan biaya. Akun Anda masih dikenakan biaya untuk jumlah data yang dipindai sebelum Anda membatalkan kueri.

Berikut ini adalah contoh CLI.

```
aws cloudtrail cancel-query
--query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE
```

**Keluaran**

```
QueryId -> (string)
QueryStatus -> (string)
```