

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

# AWS CloudTrail Log kueri
<a name="cloudtrail-logs"></a>

AWS CloudTrail adalah layanan yang merekam panggilan AWS API dan peristiwa untuk akun Amazon Web Services. 

CloudTrail log menyertakan detail tentang panggilan API apa pun yang dilakukan ke Anda Layanan AWS, termasuk konsol. CloudTrail menghasilkan file log terenkripsi dan menyimpannya di Amazon S3. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). 

**catatan**  
Jika Anda ingin melakukan kueri SQL pada informasi CloudTrail acara di seluruh akun, wilayah, dan tanggal, pertimbangkan untuk menggunakan CloudTrail Lake. CloudTrail Lake adalah AWS alternatif untuk membuat jalur yang mengumpulkan informasi dari suatu perusahaan ke dalam satu penyimpanan data peristiwa yang dapat dicari. Alih-alih menggunakan penyimpanan bucket Amazon S3, ia menyimpan peristiwa di danau data, yang memungkinkan kueri yang lebih kaya dan lebih cepat. Anda dapat menggunakannya untuk membuat kueri SQL yang mencari peristiwa di seluruh organisasi, wilayah, dan dalam rentang waktu khusus. Karena Anda melakukan kueri CloudTrail Danau di dalam CloudTrail konsol itu sendiri, menggunakan CloudTrail Lake tidak memerlukan Athena. Untuk informasi lebih lanjut, lihat dokumentasi [CloudTrail Danau](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html).

Menggunakan Athena dengan CloudTrail log adalah cara ampuh untuk meningkatkan analisis aktivitas Anda. Layanan AWS Misalnya, Anda dapat menggunakan kueri untuk mengidentifikasi tren dan mengisolasi aktivitas selengkapnya berdasarkan atribut seperti alamat IP sumber atau pengguna.

Aplikasi umum adalah menggunakan CloudTrail log untuk menganalisis aktivitas operasional untuk keamanan dan kepatuhan. Untuk informasi tentang contoh terperinci, lihat posting Blog AWS Big Data, [Menganalisis keamanan, kepatuhan, dan aktivitas operasional menggunakan AWS CloudTrail dan Amazon Athena](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/).

Anda dapat menggunakan Athena untuk mengkueri berkas log ini langsung dari Amazon S3, menentukan`LOCATION`Berkas log. Anda dapat melakukannya dengan salah satu dari dua cara berikut:
+ Dengan membuat tabel untuk file CloudTrail log langsung dari CloudTrail konsol.
+ Dengan membuat tabel secara manual untuk file CloudTrail log di konsol Athena.

**Topics**
+ [Memahami CloudTrail log dan tabel Athena](create-cloudtrail-table-understanding.md)
+ [Gunakan CloudTrail konsol untuk membuat tabel Athena untuk log CloudTrail](create-cloudtrail-table-ct.md)
+ [Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual](create-cloudtrail-table.md)
+ [Buat tabel untuk jejak luas organisasi menggunakan partisi manual](create-cloudtrail-table-org-wide-trail.md)
+ [Buat tabel untuk CloudTrail log di Athena menggunakan proyeksi partisi](create-cloudtrail-table-partition-projection.md)
+ [Contoh kueri CloudTrail log](query-examples-cloudtrail-logs.md)

# Memahami CloudTrail log dan tabel Athena
<a name="create-cloudtrail-table-understanding"></a>

Sebelum Anda mulai membuat tabel, Anda harus memahami sedikit lebih banyak tentang CloudTrail dan bagaimana menyimpan data. Ini dapat membantu Anda membuat tabel yang Anda butuhkan, apakah Anda membuatnya dari CloudTrail konsol atau dari Athena.

CloudTrail menyimpan log sebagai file teks JSON dalam format gzip terkompresi (). `*.json.gz` Lokasi file log tergantung pada cara Anda mengatur jejak, Wilayah AWS atau Wilayah tempat Anda masuk, dan faktor lainnya. 

Untuk informasi selengkapnya tentang tempat log disimpan, struktur JSON, dan isi file catatan, lihat topik berikut di[AWS CloudTrail Panduan Pengguna](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html):
+  [Menemukan file CloudTrail log Anda](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-find-log-files.html) 
+  [CloudTrail Contoh File Log](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html) 
+  [CloudTrail isi rekam](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html)
+  [CloudTrail referensi acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference.html) 

Untuk mengumpulkan log dan menyimpannya ke Amazon S3, aktifkan CloudTrail dari file. Konsol Manajemen AWS Untuk informasi selengkapnya, lihat [Membuat jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html) di *Panduan AWS CloudTrail Pengguna*.

# Gunakan CloudTrail konsol untuk membuat tabel Athena untuk log CloudTrail
<a name="create-cloudtrail-table-ct"></a>

Anda dapat membuat tabel Athena yang tidak dipartisi untuk CloudTrail menanyakan log langsung dari konsol. CloudTrail Membuat tabel Athena dari CloudTrail konsol mengharuskan Anda masuk dengan peran yang memiliki izin yang cukup untuk membuat tabel di Athena.

**catatan**  
Anda tidak dapat menggunakan CloudTrail konsol untuk membuat tabel Athena untuk log jejak organisasi. Sebaliknya, buat tabel secara manual menggunakan konsol Athena sehingga Anda dapat menentukan lokasi penyimpanan yang benar. Untuk informasi tentang jalur organisasi, lihat[Membuat jejak untuk organisasi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-trail-organization.html)di*AWS CloudTrail Panduan Pengguna*.
+ Untuk informasi tentang pengaturan izin untuk Athena, lihat[Menyiapkan, administratif, dan akses terprogram](setting-up.md).
+ Untuk informasi tentang membuat tabel dengan partisi, lihat[Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual](create-cloudtrail-table.md).

**Untuk membuat tabel Athena untuk CloudTrail jejak menggunakan konsol CloudTrail**

1. Buka CloudTrail konsol di [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1. Pada panel navigasi, pilih **Riwayat peristiwa**. 

1. Pilih**Membuat tabel Athena**.  
![\[PilihMembuat tabel Athena\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/cloudtrail-logs-create-athena-table.png)

1. Untuk**Lokasi penyimpanan**, gunakan panah bawah untuk memilih bucket Amazon S3 tempat berkas log disimpan untuk jejak untuk mengkueri.
**catatan**  
Untuk menemukan nama bucket yang dikaitkan dengan jejak, pilih **Trails** di panel CloudTrail navigasi dan lihat kolom bucket **S3** trail. Untuk melihat lokasi Amazon S3 untuk bucket, pilih tautan untuk bucket di**Bucket S3**kolom. Ini membuka konsol Amazon S3 ke lokasi CloudTrail bucket. 

1. Pilih **Buat tabel**. Tabel dibuat dengan nama default yang mencakup nama bucket Amazon S3.

# Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual
<a name="create-cloudtrail-table"></a>

Anda dapat secara manual membuat tabel untuk file CloudTrail log di konsol Athena, dan kemudian menjalankan kueri di Athena.

**Untuk membuat tabel Athena untuk CloudTrail jejak menggunakan konsol Athena**

1. Salin dan tempel pernyataan DDL berikut ke editor kueri konsol Athena, lalu modifikasi sesuai dengan kebutuhan Anda. Perhatikan bahwa karena file CloudTrail log bukan merupakan jejak tumpukan terurut dari panggilan API publik, bidang dalam file log tidak muncul dalam urutan tertentu.

   ```
   CREATE EXTERNAL TABLE cloudtrail_logs (
   eventversion STRING,
   useridentity STRUCT<
                  type:STRING,
                  principalid:STRING,
                  arn:STRING,
                  accountid:STRING,
                  invokedby:STRING,
                  accesskeyid:STRING,
                  username:STRING,
                  onbehalfof: STRUCT<
                       userid: STRING,
                       identitystorearn: STRING>,
     sessioncontext:STRUCT<
       attributes:STRUCT<
                  mfaauthenticated:STRING,
                  creationdate:STRING>,
       sessionissuer:STRUCT<  
                  type:STRING,
                  principalid:STRING,
                  arn:STRING, 
                  accountid:STRING,
                  username:STRING>,
       ec2roledelivery:string,
       webidfederationdata: STRUCT<
                  federatedprovider: STRING,
                  attributes: map<string,string>>
     >
   >,
   eventtime STRING,
   eventsource STRING,
   eventname STRING,
   awsregion STRING,
   sourceipaddress STRING,
   useragent STRING,
   errorcode STRING,
   errormessage STRING,
   requestparameters STRING,
   responseelements STRING,
   additionaleventdata STRING,
   requestid STRING,
   eventid STRING,
   resources ARRAY<STRUCT<
                  arn:STRING,
                  accountid:STRING,
                  type:STRING>>,
   eventtype STRING,
   apiversion STRING,
   readonly STRING,
   recipientaccountid STRING,
   serviceeventdetails STRING,
   sharedeventid STRING,
   vpcendpointid STRING,
   vpcendpointaccountid STRING,
   eventcategory STRING,
   addendum STRUCT<
     reason:STRING,
     updatedfields:STRING,
     originalrequestid:STRING,
     originaleventid:STRING>,
   sessioncredentialfromconsole STRING,
   edgedevicedetails STRING,
   tlsdetails STRUCT<
     tlsversion:STRING,
     ciphersuite:STRING,
     clientprovidedhostheader:STRING>
   )
   PARTITIONED BY (region string, year string, month string, day string)
   ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
   OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/Account_ID/';
   ```
**catatan**  
Kami menyarankan menggunakan yang `org.apache.hive.hcatalog.data.JsonSerDe` ditunjukkan dalam contoh. Meskipun `com.amazon.emr.hive.serde.CloudTrailSerde` ada, saat ini tidak menangani beberapa CloudTrail bidang yang lebih baru. 

1. (Opsional) Hapus semua bidang yang tidak diperlukan untuk tabel Anda. Jika Anda hanya perlu membaca satu set kolom tertentu, definisi tabel Anda dapat mengecualikan kolom lainnya.

1. Ubah `s3://amzn-s3-demo-bucket/AWSLogs/Account_ID/` untuk menunjuk ke bucket Amazon S3 yang berisi data log yang ingin Anda kueri. Contoh menggunakan`LOCATION`nilai log untuk akun tertentu, tetapi Anda dapat menggunakan level kekhususan yang sesuai dengan aplikasi Anda. Contoh:
   + Untuk menganalisis data dari beberapa akun, Anda dapat memutar kembali`LOCATION`specifier untuk menunjukkan semua`AWSLogs`dengan menggunakan`LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/'`.
   + Untuk menganalisis data dari tanggal, akun, dan Wilayah tertentu, gunakan`LOCATION 's3://amzn-s3-demo-bucket/123456789012/CloudTrail/us-east-1/2016/03/14/'.` 
   + Untuk menganalisis data aktivitas jaringan alih-alih peristiwa manajemen, ganti `/CloudTrail/` dalam `LOCATION` klausa dengan`/CloudTrail-NetworkActivity/`. 

   Menggunakan level tertinggi dalam hirarki objek memberikan fleksibilitas terbesar saat Anda kueri menggunakan Athena.

1. Verifikasi bahwa bidang terdaftar dengan benar. Untuk informasi selengkapnya tentang daftar lengkap bidang dalam CloudTrail catatan, lihat [konten CloudTrail rekaman](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html).

   `CREATE TABLE`Pernyataan contoh di Langkah 1 menggunakan[Sarang JSON SerDe](hive-json-serde.md). Dalam contoh, bidang, `requestparameters``responseelements`, dan `additionaleventdata` terdaftar sebagai tipe `STRING` dalam kueri, tetapi tipe `STRUCT` data yang digunakan dalam JSON. Oleh karena itu, untuk mendapatkan data dari bidang ini, gunakan`JSON_EXTRACT`fungsi. Untuk informasi selengkapnya, lihat [Ekstrak data JSON dari string](extracting-data-from-JSON.md). Untuk peningkatan kinerja, contoh mempartisi data berdasarkan Wilayah AWS, tahun, bulan, dan hari.

1. Jalankan `CREATE TABLE` pernyataan di konsol Athena.

1. Menggunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md)perintah untuk memuat partisi sehingga Anda dapat meminta mereka, seperti dalam contoh berikut.

   ```
   ALTER TABLE table_name ADD 
      PARTITION (region='us-east-1',
                 year='2019',
                 month='02',
                 day='01')
      LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/Account_ID/CloudTrail/us-east-1/2019/02/01/'
   ```

# Buat tabel untuk jejak luas organisasi menggunakan partisi manual
<a name="create-cloudtrail-table-org-wide-trail"></a>

Untuk membuat tabel untuk file CloudTrail log luas organisasi di Athena, ikuti langkah-langkahnya[Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual](create-cloudtrail-table.md), tetapi buat modifikasi yang dicatat dalam prosedur berikut.

**Untuk membuat tabel Athena untuk log lebar organisasi CloudTrail**

1. Dalam `CREATE TABLE` pernyataan tersebut, ubah `LOCATION` klausa untuk menyertakan ID organisasi, seperti pada contoh berikut:

   ```
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/'
   ```

1. Dalam `PARTITIONED BY` klausa, tambahkan entri untuk ID akun sebagai string, seperti pada contoh berikut:

   ```
   PARTITIONED BY (account string, region string, year string, month string, day string)
   ```

   Contoh berikut menunjukkan hasil gabungan:

   ```
   ...
   
   PARTITIONED BY (account string, region string, year string, month string, day string) 
   ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
   OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/Account_ID/CloudTrail/'
   ```

1. Dalam `ADD PARTITION` klausa `ALTER TABLE` pernyataan, sertakan ID akun, seperti pada contoh berikut:

   ```
   ALTER TABLE table_name ADD
   PARTITION (account='111122223333',
   region='us-east-1',
   year='2022',
   month='08',
   day='08')
   ```

1. Dalam `LOCATION` klausa `ALTER TABLE` pernyataan, sertakan ID organisasi, ID akun, dan partisi yang ingin Anda tambahkan, seperti pada contoh berikut:

   ```
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/Account_ID/CloudTrail/us-east-1/2022/08/08/'
   ```

   `ALTER TABLE`Pernyataan contoh berikut menunjukkan hasil gabungan:

   ```
   ALTER TABLE table_name ADD
   PARTITION (account='111122223333',
   region='us-east-1',
   year='2022',
   month='08',
   day='08')
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/111122223333/CloudTrail/us-east-1/2022/08/08/'
   ```

Perhatikan bahwa, dalam organisasi besar, menggunakan metode ini untuk menambahkan dan memelihara partisi secara manual untuk setiap ID akun organisasi dapat menjadi rumit. Dalam skenario seperti itu, pertimbangkan untuk menggunakan CloudTrail Danau daripada Athena. CloudTrail Danau dalam skenario seperti itu menawarkan keuntungan sebagai berikut:
+ Secara otomatis menggabungkan log di seluruh organisasi
+ Tidak memerlukan pengaturan atau pemeliharaan partisi atau meja Athena
+ Kueri dijalankan langsung di konsol CloudTrail 
+ Menggunakan bahasa kueri yang kompatibel dengan SQL

Untuk informasi selengkapnya, lihat [Bekerja dengan AWS CloudTrail Danau](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) di *Panduan AWS CloudTrail Pengguna*. 

# Buat tabel untuk CloudTrail log di Athena menggunakan proyeksi partisi
<a name="create-cloudtrail-table-partition-projection"></a>

Karena CloudTrail log memiliki struktur yang diketahui yang skema partisi dapat Anda tentukan sebelumnya, Anda dapat mengurangi runtime kueri dan mengotomatiskan manajemen partisi dengan menggunakan fitur proyeksi partisi Athena. Proyeksi partisi secara otomatis menambahkan partisi baru saat data baru ditambahkan. Ini menghapus kebutuhan bagi Anda untuk menambahkan partisi secara manual dengan menggunakan`ALTER TABLE ADD PARTITION`. 

`CREATE TABLE`Pernyataan contoh berikut secara otomatis menggunakan proyeksi partisi pada CloudTrail log dari tanggal tertentu hingga saat ini untuk satu Wilayah AWS. Dalam `storage.location.template` klausa `LOCATION` and, ganti, *bucket**account-id*, dan *aws-region* placeholder dengan nilai yang identik. Untuk`projection.timestamp.range`, ganti *2020**01*//*01*dengan tanggal mulai yang ingin Anda gunakan. Setelah Anda menjalankan kueri dengan sukses, Anda dapat meminta tabel. Anda tidak perlu menjalankan `ALTER TABLE ADD PARTITION` untuk memuat partisi.

```
CREATE EXTERNAL TABLE cloudtrail_logs_pp(
    eventversion STRING,
    useridentity STRUCT<
        type: STRING,
        principalid: STRING,
        arn: STRING,
        accountid: STRING,
        invokedby: STRING,
        accesskeyid: STRING,
        username: STRING,
        onbehalfof: STRUCT<
             userid: STRING,
             identitystorearn: STRING>,
        sessioncontext: STRUCT<
            attributes: STRUCT<
                mfaauthenticated: STRING,
                creationdate: STRING>,
            sessionissuer: STRUCT<
                type: STRING,
                principalid: STRING,
                arn: STRING,
                accountid: STRING,
                username: STRING>,
            ec2roledelivery:string,
            webidfederationdata: STRUCT<
                federatedprovider: STRING,
                attributes: map<string,string>>
        >
    >,
    eventtime STRING,
    eventsource STRING,
    eventname STRING,
    awsregion STRING,
    sourceipaddress STRING,
    useragent STRING,
    errorcode STRING,
    errormessage STRING,
    requestparameters STRING,
    responseelements STRING,
    additionaleventdata STRING,
    requestid STRING,
    eventid STRING,
    readonly STRING,
    resources ARRAY<STRUCT<
        arn: STRING,
        accountid: STRING,
        type: STRING>>,
    eventtype STRING,
    apiversion STRING,
    recipientaccountid STRING,
    serviceeventdetails STRING,
    sharedeventid STRING,
    vpcendpointid STRING,
    vpcendpointaccountid STRING,
    eventcategory STRING,
    addendum STRUCT<
      reason:STRING,
      updatedfields:STRING,
      originalrequestid:STRING,
      originaleventid:STRING>,
    sessioncredentialfromconsole STRING,
    edgedevicedetails STRING,
    tlsdetails STRUCT<
      tlsversion:STRING,
      ciphersuite:STRING,
      clientprovidedhostheader:STRING>
  )
PARTITIONED BY (
   `timestamp` string)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://amzn-s3-demo-bucket/AWSLogs/account-id/CloudTrail/aws-region'
TBLPROPERTIES (
  'projection.enabled'='true', 
  'projection.timestamp.format'='yyyy/MM/dd', 
  'projection.timestamp.interval'='1', 
  'projection.timestamp.interval.unit'='DAYS', 
  'projection.timestamp.range'='2020/01/01,NOW', 
  'projection.timestamp.type'='date', 
  'storage.location.template'='s3://amzn-s3-demo-bucket/AWSLogs/account-id/CloudTrail/aws-region/${timestamp}')
```

Untuk informasi selengkapnya tentang proyek partisi, lihat [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md).

# Contoh kueri CloudTrail log
<a name="query-examples-cloudtrail-logs"></a>

Contoh berikut menunjukkan sebagian kueri yang mengembalikan semua permintaan anonim (tidak ditandatangani) dari tabel yang dibuat untuk log CloudTrail peristiwa. Kueri ini memilih permintaan tersebut tempat`useridentity.accountid`adalah anonim, dan`useridentity.arn`tidak ditentukan:

```
SELECT *
FROM cloudtrail_logs
WHERE 
    eventsource = 's3.amazonaws.com' AND 
    eventname in ('GetObject') AND 
    useridentity.accountid = 'anonymous' AND 
    useridentity.arn IS NULL AND
    requestparameters LIKE '%[your bucket name ]%';
```

Untuk informasi selengkapnya, lihat posting blog AWS Big Data [Menganalisis keamanan, kepatuhan, dan aktivitas operasional menggunakan AWS CloudTrail Amazon Athena](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/).

## Kueri bidang bersarang di log CloudTrail
<a name="cloudtrail-logs-nested-fields"></a>

Karena`userIdentity`dan`resources`adalah tipe data Nest, kueri mereka memerlukan perlakuan khusus.

Parameter`userIdentity`objek terdiri dari bersarang`STRUCT`jenis. Ini dapat bertanya menggunakan titik untuk memisahkan bidang, seperti dalam contoh berikut:

```
SELECT 
    eventsource, 
    eventname,
    useridentity.sessioncontext.attributes.creationdate,
    useridentity.sessioncontext.sessionissuer.arn
FROM cloudtrail_logs
WHERE useridentity.sessioncontext.sessionissuer.arn IS NOT NULL
ORDER BY eventsource, eventname
LIMIT 10
```

Parameter`resources`bidang adalah sebuah larik dari`STRUCT`objek. Untuk larik ini, gunakan`CROSS JOIN UNNEST`untuk unnest larik sehingga Anda dapat mengkueri objeknya.

Contoh berikut mengembalikan semua baris tempat sumber daya ARN berakhir di`example/datafile.txt`. Untuk dibaca,[mengganti](https://prestodb.io/docs/current/functions/string.html#replace)fungsi menghapus awal`arn:aws:s3:::`substring dari ARN.

```
SELECT 
    awsregion,
    replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource,
    eventname,
    eventtime,
    useragent
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE unnested.resources_entry.ARN LIKE '%example/datafile.txt'
ORDER BY eventtime
```

Contoh kueri berikut untuk`DeleteBucket`peristiwa. Kueri mengekstraksi nama bucket dan ID akun yang bucket milik`resources`objek.

```
SELECT 
    awsregion,
    replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as deleted_bucket,
    eventtime AS time_deleted,
    useridentity.username, 
    unnested.resources_entry.accountid as bucket_acct_id 
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE eventname = 'DeleteBucket'
ORDER BY eventtime
```

Untuk informasi selengkapnya tentang unnesting, lihat[Filter array](filtering-arrays.md).

## Kiat untuk menanyakan log CloudTrail
<a name="tips-for-querying-cloudtrail-logs"></a>

Pertimbangkan hal berikut saat menjelajahi data CloudTrail log:
+ Sebelum kueri log, verifikasi bahwa tabel log Anda terlihat sama dengan yang di[Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual](create-cloudtrail-table.md). Jika tidak tabel pertama, menghapus tabel yang ada menggunakan perintah berikut:`DROP TABLE cloudtrail_logs`.
+ Setelah Anda drop tabel yang ada, kembali membuat itu. Untuk informasi selengkapnya, lihat [Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual](create-cloudtrail-table.md).

  Verifikasi bahwa bidang dalam permintaan Athena Anda terdaftar dengan benar. Untuk informasi tentang daftar lengkap bidang dalam CloudTrail catatan, lihat [konten CloudTrail rekaman](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html). 

  Jika kueri Anda termasuk bidang dalam format JSON, seperti`STRUCT`, ekstrak data dari JSON. Untuk informasi selengkapnya, lihat [Ekstrak data JSON dari string](extracting-data-from-JSON.md). 

  Beberapa saran untuk mengeluarkan kueri terhadap tabel Anda CloudTrail :
+ Mulailah dengan melihat pengguna mana yang memanggil operasi API mana dan dari alamat IP sumber mana.
+ Gunakan kueri SQL dasar berikut sebagai templat Anda. Tempelkan kueri ke konsol Athena dan jalankannya.

  ```
  SELECT
   useridentity.arn,
   eventname,
   sourceipaddress,
   eventtime
  FROM cloudtrail_logs
  LIMIT 100;
  ```
+ Ubah kueri untuk mengeksplorasi data Anda lebih lanjut.
+ Untuk meningkatkan performa, sertakan`LIMIT`klausa untuk mengembalikan subset tertentu dari baris.