

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

# Pencatatan permintaan dengan pencatatan akses server
<a name="ServerLogs"></a>

Pencatatan akses server menyediakan catatan terperinci untuk permintaan yang dilakukan ke bucket. Log akses server bermanfaat untuk berbagai macam aplikasi. Misalnya, informasi log akses dapat berguna dalam audit keamanan dan akses. Informasi ini juga dapat membantu Anda untuk mempelajari basis pelanggan Anda, serta memahami tagihan Amazon S3.

**catatan**  
Log akses server tidak mencatat informasi tentang kesalahan pengalihan wilayah yang salah untuk Wilayah yang diluncurkan setelah 20 Maret 2019. Kesalahan pengalihan wilayah yang salah terjadi saat permintaan objek atau bucket dibuat di luar Wilayah tempat bucket berada. 

## Bagaimana cara mengaktifkan log pengiriman?
<a name="server-access-logging-overview"></a>

Untuk mengaktifkan log pengiriman, lakukan langkah-langkah basic berikut. Lihat perinciannya di [Mengaktifkan pencatatan akses server Amazon S3](enable-server-access-logging.md).

1. **Berikan nama bucket tujuan** (juga dikenal sebagai *bucket target*). Bucket ini adalah tempat Anda ingin Amazon S3 menyimpan pencatatan akses sebagai objek. Bucket sumber dan tujuan harus berada di Wilayah AWS yang sama, dan dimiliki oleh akun yang sama. Bucket tujuan tidak boleh memiliki konfigurasi periode retensi default Kunci Objek S3. Bucket tujuan juga harus tidak mengaktifkan Requester Pays.

   Anda dapat mengirimkan log ke bucket mana pun milik Anda yang berada di Wilayah yang sama dengan bucket sumber, termasuk bucket sumber itu sendiri. Tetapi untuk manajemen log yang lebih sederhana, kami sarankan agar Anda menyimpan log akses dalam bucket yang berbeda. 

   Saat bucket sumber dan bucket tujuan Anda merupakan bucket yang sama, akan dibuat log tambahan untuk log yang ditulis ke bucket, yang akan membuat loop log tak terbatas. Kami tidak menyarankan melakukan hal ini karena dapat menyebabkan sedikit peningkatan dalam penagihan penyimpanan Anda. Selain itu, catatan tambahan tentang log mungkin akan menyulitkan Anda menemukan log yang Anda cari. 

   Jika Anda memilih untuk menyimpan log akses di bucket sumber, sebaiknya Anda menentukan prefiks tujuan (juga dikenal sebagai *prefiks target*) untuk semua kunci objek log. Saat Anda menentukan prefiks, semua nama objek log dimulai dengan string umum, yang membuat objek log lebih mudah diidentifikasi. 

1. **(Opsional) Tetapkan prefiks tujuan ke semua kunci objek log Amazon S3.** Awalan tujuan (juga dikenal sebagai *prefiks target*) menjadikan pencarian objek log lebih mudah. Misalnya, jika Anda menentukan nilai prefiks`logs/`, setiap objek log yang dibuat Amazon S3 dimulai dengan prefiks `logs/` di dalam kuncinya, misalnya:

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```

   Jika Anda menentukan nilai prefiks `logs`, objek log muncul sebagai berikut:

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

   [Prefiks](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) juga berguna untuk membedakan bucket sumber jika beberapa bucket mencatat ke bucket tujuan yang sama.

   Prefiks ini juga dapat membantu saat Anda menghapus pencatatan. Misalnya, Anda dapat menetapkan aturan konfigurasi siklus aktif bagi Amazon S3 untuk menghapus objek dengan prefiks kunci tertentu. Untuk informasi selengkapnya, lihat [Menghapus file log Amazon S3](deleting-log-files-lifecycle.md).

1. **(Opsional) Atur izin **sehingga orang lain dapat mengakses log yang dihasilkan.** Secara default, hanya pemilik bucket yang selalu memiliki akses penuh ke objek log. Jika bucket tujuan menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek S3 untuk menonaktifkan daftar kontrol akses (ACLs), Anda tidak dapat memberikan izin dalam hibah tujuan (juga dikenal sebagai hibah *target*) yang digunakan. ACLs Namun, Anda dapat memperbarui kebijakan bucket untuk bucket tujuan untuk memberikan akses kepada orang lain. Untuk informasi selengkapnya, lihat [Identity and Access Management untuk Amazon S3](security-iam.md) dan [Izin untuk pengiriman log](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

1. **(Opsional) Tetapkan format kunci objek log untuk file log.** Anda memiliki dua opsi untuk format kunci objek log (juga dikenal sebagai *format kunci objek target*): 
   + **Non-date-based partisi** - Ini adalah format kunci objek log asli. Jika Anda memilih format ini, format kunci file log muncul sebagai berikut: 

     ```
     [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Misalnya, jika Anda menentukan `logs/` sebagai prefiks, objek log Anda diberi nama seperti ini: 

     ```
     logs/2013-11-01-21-32-16-E568B2907131C0C0
     ```
   + **Partisi berbasis tanggal**–Jika Anda memilih partisi berbasis tanggal, Anda dapat memilih waktu peristiwa atau waktu pengiriman untuk file log sebagai sumber tanggal yang digunakan dalam format log. Format ini membuatnya lebih mudah untuk mengkueri log.

     Jika Anda memilih partisi berbasis tanggal, format kunci file log akan muncul sebagai berikut: 

     ```
     [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
     ```

     Misalnya, jika Anda menentukan `logs/` sebagai prefiks target, objek log Anda diberi nama seperti ini:

     ```
     logs/123456789012/us-west-2/amzn-s3-demo-source-bucket/2023/03/01/2023-03-01-21-32-16-E568B2907131C0C0
     ```

     Untuk pengiriman waktu pengiriman, waktu dalam nama file log sesuai dengan waktu pengiriman untuk file log. 

     Untuk pengiriman waktu peristiwa, tahun, bulan, dan hari sesuai dengan hari di mana peristiwa itu terjadi, dan jam, menit dan detik diatur ke `00` dalam kunci. Log yang dikirimkan dalam file log ini hanya untuk hari tertentu. 

   

   Jika Anda mengonfigurasi log Anda melalui AWS Command Line Interface (AWS CLI) AWS SDKs, atau Amazon S3 REST API, `TargetObjectKeyFormat` gunakan untuk menentukan format kunci objek log. Untuk menentukan non-date-based partisi, gunakan. `SimplePrefix` Untuk menentukan partisi berbasis data, gunakan `PartitionedPrefix`. Jika Anda menggunakan`PartitionedPrefix`, gunakan `PartitionDateSource` untuk menentukan antara `EventTime`, atau `DeliveryTime`.

   Untuk `SimplePrefix`, format kunci file log muncul sebagai berikut:

   ```
   [TargetPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

   Untuk `PartitionedPrefix` dengan waktu peristiwa atau waktu pengiriman, format kunci file log muncul sebagai berikut:

   ```
   [TargetPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
   ```

## Format kunci objek log
<a name="server-log-keyname-format"></a>

Amazon S3 menggunakan format kunci objek berikut untuk objek log yang diunggahnya di bucket tujuan:
+ **Non-date-based partisi** - Ini adalah format kunci objek log asli. Jika Anda memilih format ini, format kunci file log muncul sebagai berikut: 

  ```
  [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```
+ **Partisi berbasis tanggal**–Jika Anda memilih partisi berbasis tanggal, Anda dapat memilih waktu peristiwa atau waktu pengiriman untuk file log sebagai sumber tanggal yang digunakan dalam format log. Format ini membuatnya lebih mudah untuk mengkueri log.

  Jika Anda memilih partisi berbasis tanggal, format kunci file log akan muncul sebagai berikut: 

  ```
  [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]
  ```

Dalam kunci objek log, `YYYY`, `MM`, `DD`, `hh`, `mm`, dan `ss` merupakan digit tahun, bulan, hari, jam, menit, dan detik (masing-masing). Tanggal dan waktu ini berada dalam Waktu Universal Terkoordinasi (UTC). 

Berkas log yang dikirimkan pada waktu tertentu dapat berisi catatan yang ditulis kapan pun sebelum waktu tersebut. Tidak ada cara untuk mengetahui apakah semua catatan log untuk interval waktu tertentu telah dikirim atau tidak. 

Komponen `UniqueString` pada kunci ada untuk mencegah penimpaan file. Tidak memiliki makna, dan perangkat lunak pemroses log harus mengabaikannya. 

## Bagaimana log dikirimkan?
<a name="how-logs-delivered"></a>

Amazon S3 secara berkala mengumpulkan catatan akses, mengonsolidasikan catatan dalam file log, kemudian mengunggah file log ke bucket tujuan sebagai objek log. Jika Anda mengaktifkan pencatatan log ke beberapa bucket sumber yang mengidentifikasi bucket tujuan yang sama, bucket tujuan akan memiliki catatan akses untuk semua bucket sumber tersebut. Namun demikian, setiap objek catatan melaporkan arsip log akses untuk bucket sumber spesifik. 

Amazon S3 menggunakan akun pengiriman log kustom untuk menulis log akses server. Penulisan ini tunduk pada pembatasan kontrol akses biasa. Kami menyarankan Anda memperbarui kebijakan bucket pada bucket tujuan untuk memberikan akses ke pengguna utama layanan pencatatan (`logging.s3.amazonaws.com`) kepada pengiriman log akses. Anda juga dapat memberikan akses kepada pengiriman log akses ke grup pengiriman log S3 melalui daftar kontrol akses (ACL) bucket Anda. Namun, pemberian akses ke grup pengiriman log S3 dengan menggunakan bucket ACL Anda tidak disarankan. 

Saat mengaktifkan pencatatan akses server dan memberikan akses untuk pengiriman log akses melalui kebijakan bucket tujuan, Anda harus memperbarui kebijakan untuk mengizinkan akses `s3:PutObject` bagi pengguna utama layanan pencatatan. Jika Anda menggunakan konsol Amazon S3 untuk mengaktifkan pencatatan akses server, konsol akan secara otomatis memperbarui kebijakan bucket tujuan untuk memberikan izin ini kepada pengguna utama layanan logging. Untuk informasi selengkapnya tentang pemberian izin untuk pengiriman log akses server, lihat [Izin untuk pengiriman log](enable-server-access-logging.md#grant-log-delivery-permissions-general). 

**catatan**  
S3 tidak mendukung pengiriman CloudTrail log atau log akses server ke pemohon atau pemilik bucket untuk permintaan titik akhir VPC saat kebijakan titik akhir VPC menyangkalnya atau untuk permintaan yang gagal sebelum kebijakan VPC dievaluasi.

**Pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3**  
Jika bucket tujuan menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, akan ACLs dinonaktifkan dan tidak lagi memengaruhi izin. Anda harus memperbarui kebijakan bucket pada bucket tujuan untuk memberikan akses ke pengguna utama layanan logging. Untuk informasi selengkapnya tentang Kepemilikan Objek, lihat [Berikan akses ke grup pengiriman log S3 untuk pencatatan akses server](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs).

## Pengiriman log server dengan upaya terbaik
<a name="LogDeliveryBestEffort"></a>

Catatan log akses server disampaikan atas dasar upaya terbaik. Sebagian besar permintaan bucket yang dikonfigurasi dengan benar untuk mencatat hasil dalam catatan log yang dikirim. Sebagian besar catatan log dikirim dalam beberapa jam setelah log dicatat, tetapi dapat dikirimkan lebih sering. 

Kelengkapan dan ketepatan waktu pencatatan server tidak dijamin. Catatan log untuk permintaan tertentu mungkin dikirim dalam waktu lama setelah permintaan diproses, atau *mungkin tidak dikirimkan sama sekali*. Ada kemungkinan bahwa Anda bahkan mungkin melihat duplikasi catatan log. Tujuan log server adalah untuk memberikan Anda ide tentang sifat lalu lintas terhadap bucket Anda. Meskipun catatan akuntasi log jarang hilang atau digandakan, perlu diketahui bahwa pencatatan akuntasi server tidak dimaksudkan untuk menjadi pencatatan akuntasi lengkap atas semua permintaan.

Karena sifat upaya terbarik dari pencatatan log, laporan penggunaan Anda dapat mencakup satu permintaan akses atau lebih yang tidak muncul di log server yang dikirim. Anda dapat menemukan laporan penggunaan ini di bawah **Laporan biaya & penggunaan** di konsol AWS Manajemen Penagihan dan Biaya .

## Perubahan status pencatatan log bucket memerlukan waktu
<a name="BucketLoggingStatusChanges"></a>

Perubahan status pencatatan log pada bucket memerlukan waktu untuk benar-benar memengaruhi pengiriman file log. Misalnya, jika Anda mengaktifkan pencatatan log untuk bucket, beberapa permintaan yang dilakukan di jam berikutnya mungkin akan dicatat, dan yang lainnya mungkin tidak. Misalkan Anda mengubah bucket tujuan untuk pencatatan log dari bucket A ke bucket B. Untuk jam berikutnya, beberapa catatan mungkin akan terus dikirimkan ke bucket A, sedangkan yang lain mungkin dikirimkan ke bucket tujuan B baru. Dalam semua kasus, pengaturan baru tersebut pada akhirnya akan berlaku tanpa tindakan lebih lanjut dari pihak Anda. 

Untuk informasi lebih lanjut tentang pencatatan dan file log, lihat bagian berikut:

**Topics**
+ [

## Bagaimana cara mengaktifkan log pengiriman?
](#server-access-logging-overview)
+ [

## Format kunci objek log
](#server-log-keyname-format)
+ [

## Bagaimana log dikirimkan?
](#how-logs-delivered)
+ [

## Pengiriman log server dengan upaya terbaik
](#LogDeliveryBestEffort)
+ [

## Perubahan status pencatatan log bucket memerlukan waktu
](#BucketLoggingStatusChanges)
+ [

# Mengaktifkan pencatatan akses server Amazon S3
](enable-server-access-logging.md)
+ [

# Server Amazon S3 mengakses format log
](LogFormat.md)
+ [

# Menghapus file log Amazon S3
](deleting-log-files-lifecycle.md)
+ [

# Menggunakan log akses server Amazon S3 untuk mengidentifikasi permintaan
](using-s3-access-logs-to-identify-requests.md)
+ [

# Memecahkan masalah pencatatan akses server
](troubleshooting-server-access-logging.md)

# Mengaktifkan pencatatan akses server Amazon S3
<a name="enable-server-access-logging"></a>

Pencatatan akses server menyediakan catatan terperinci untuk permintaan yang dilakukan ke bucket Amazon S3 Anda. Log akses server bermanfaat untuk berbagai macam aplikasi. Misalnya, informasi log akses dapat berguna dalam audit keamanan dan akses. Informasi ini juga dapat membantu Anda untuk mempelajari basis pelanggan Anda, serta memahami tagihan Amazon S3.

Secara default, Amazon S3 tidak mengumpulkan log akses server. Saat Anda mengaktifkan pencatatan log, Amazon S3 mengirimkan pencatatan akses untuk bucket sumber ke bucket tujuan (juga dikenal sebagai *bucket target*) yang Anda pilih. Bucket tujuan harus sama Wilayah AWS dan Akun AWS sebagai ember sumber. 

Catatan log akses berisi detail tentang permintaan yang dilakukan ke bucket. Informasi ini dapat mencakup jenis permintaan, sumber daya yang ditentukan dalam permintaan, dan waktu serta tanggal pemrosesan permintaan. Untuk informasi lebih lanjut tentang dasar pencatatan log, lihat [Pencatatan permintaan dengan pencatatan akses server](ServerLogs.md). 

**penting**  
Tidak ada biaya tambahan untuk mengaktifkan pencatatan akses server di bucket Amazon S3. Namun, semua file log yang dikirim sistem kepada Anda akan dikenakan biaya penyimpanan yang biasa. (Anda dapat menghapus file log ini kapan saja.) Kami tidak menilai biaya transfer data untuk pengiriman file log, tetapi kami memang mengenakan tarif transfer data normal untuk mengakses file log.
bucket tujuan Anda seharusnya tidak memiliki akses server pencatatan yang diaktifkan. Anda dapat mengirimkan log ke bucket mana pun milik Anda yang berada di Wilayah yang sama dengan bucket sumber, termasuk bucket sumber itu sendiri. Namun, mengirimkan log ke bucket sumber akan menyebabkan loop log yang tak terbatas dan tidak disarankan. Tetapi untuk manajemen log yang lebih sederhana, kami sarankan agar Anda menyimpan log akses dalam bucket yang berbeda. Untuk informasi selengkapnya, lihat [Bagaimana cara mengaktifkan log pengiriman?](ServerLogs.md#server-access-logging-overview)
Bucket S3 yang mengaktifkan Kunci Objek S3 tidak dapat digunakan sebagai bucket tujuan untuk pencatatan akses server. Bucket tujuan Anda tidak boleh memiliki konfigurasi periode retensi default.
Bucket tujuan tidak boleh mengaktifkan Pembayaran oleh Pemohon.

Anda dapat mengaktifkan atau menonaktifkan pencatatan akses server dengan menggunakan konsol Amazon S3, Amazon S3 API,AWS CLI(), AWS Command Line Interface atau. AWS SDKs 

## Izin untuk pengiriman log
<a name="grant-log-delivery-permissions-general"></a>

Amazon S3 menggunakan akun pengiriman log kustom untuk menulis log akses server. Penulisan ini tunduk pada pembatasan kontrol akses biasa. Untuk pengiriman log akses, Anda harus memberikan akses kepada pengguna utama layanan pencatatan (`logging.s3.amazonaws.com`) ke bucket tujuan Anda.

Untuk memberikan izin ke Amazon S3 untuk pengiriman log, Anda dapat menggunakan kebijakan bucket atau daftar kontrol akses bucket ACLs (), tergantung pada setelan Kepemilikan Objek S3 bucket tujuan. Namun, kami menyarankan Anda menggunakan kebijakan bucket sebagai gantinya ACLs. 

**Pengaturan yang diberlakukan pemilik bucket untuk Kepemilikan Objek S3**  
Jika bucket tujuan menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, akan ACLs dinonaktifkan dan tidak lagi memengaruhi izin. Dalam hal ini, Anda harus memperbarui kebijakan bucket untuk bucket tujuan untuk memberikan akses ke pengguna utama layanan logging. Anda tidak dapat memperbarui ACL bucket untuk memberikan akses ke grup pengiriman log S3. Anda juga tidak dapat menyertakan pemberian tujuan (juga dikenal sebagai *pemberian target*) dalam konfigurasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html) Anda. 

Untuk informasi tentang memigrasi bucket yang ada ACLs untuk pengiriman log akses ke kebijakan bucket, lihat[Berikan akses ke grup pengiriman log S3 untuk pencatatan akses server](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Untuk informasi selengkapnya tentang Kepemilikan Objek, lihat [Mengontrol kepemilikan objek dan menonaktifkan bucket ACLs Anda](about-object-ownership.md). Saat Anda membuat bucket baru, dinonaktifkan ACLs secara default.

**memberikan akses dengan menggunakan kebijakan bucket**  
Untuk memberikan akses dengan menggunakan kebijakan bucket di bucket tujuan, perbarui kebijakan bucket untuk memberikan izin `s3:PutObject` kepada pengguna utama layanan logging. Jika Anda menggunakan konsol Amazon S3 untuk mengaktifkan pencatatan akses server, konsol secara otomatis memperbarui kebijakan bucket pada bucket tujuan untuk memberikan izin ini kepada pengguna utama layanan pencatatan. Jika Anda mengaktifkan pencatatan akses server secara terprogram, Anda harus memperbarui kebijakan bucket secara manual untuk bucket tujuan untuk memberikan akses ke pengguna utama layanan logging. 

Untuk contoh kebijakan bucket yang memberikan akses ke pengguna utama layanan logging, lihat [Berikan izin kepada pengguna utama layanan logging dengan menggunakan kebijakan bucket](#grant-log-delivery-permissions-bucket-policy).

**Memberikan akses dengan menggunakan bucket ACLs**  
Anda dapat menggunakan bucket secara bergantian ACLs untuk memberikan akses untuk pengiriman log akses. Anda menambahkan entri pemberian ke ACL bucket yang memberikan izin `WRITE` dan `READ_ACP` ke grup pengiriman log S3. Namun, pemberian akses ke grup pengiriman log S3 dengan menggunakan bucket tidak ACLs disarankan. Untuk informasi selengkapnya, lihat [Mengontrol kepemilikan objek dan menonaktifkan bucket ACLs Anda](about-object-ownership.md). Untuk informasi tentang memigrasi bucket yang ada ACLs untuk pengiriman log akses ke kebijakan bucket, lihat[Berikan akses ke grup pengiriman log S3 untuk pencatatan akses server](object-ownership-migrating-acls-prerequisites.md#object-ownership-server-access-logs). Untuk contoh ACL yang memberikan akses ke pengguna utama layanan logging, lihat [Berikan izin ke grup pengiriman log dengan menggunakan bucket ACL](#grant-log-delivery-permissions-acl).

### Berikan izin kepada pengguna utama layanan logging dengan menggunakan kebijakan bucket
<a name="grant-log-delivery-permissions-bucket-policy"></a>

Contoh kebijakan bucket ini memberikan `s3:PutObject` izin kepada pengguna utama layanan logging (`logging.s3.amazonaws.com`). Untuk menggunakan kebijakan bucket ini, ganti `user input placeholders` dengan informasi Anda sendiri. Dalam kebijakan berikut, `amzn-s3-demo-destination-bucket` adalah bucket tujuan tempat log akses server akan dikirimkan, dan `amzn-s3-demo-source-bucket` merupakan bucket sumber. `EXAMPLE-LOGGING-PREFIX`adalah awalan tujuan opsional (juga dikenal sebagai *awalan target*) yang ingin Anda gunakan untuk objek log Anda. `SOURCE-ACCOUNT-ID`adalah Akun AWS yang memiliki ember sumber. 

**catatan**  
Jika terdapat pernyataan `Deny` dalam kebijakan bucket Anda, pastikan pernyataan tersebut tidak mencegah Amazon S3 mengirimkan pencatatan akses.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/EXAMPLE-LOGGING-PREFIX*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                }
            }
        }
    ]
}
```

------

### Berikan izin ke grup pengiriman log dengan menggunakan bucket ACL
<a name="grant-log-delivery-permissions-acl"></a>

**catatan**  
Sebagai praktik keamanan terbaik, Amazon S3 menonaktifkan daftar kontrol akses (ACLs) secara default di semua bucket baru. Untuk informasi selengkapnya tentang izin ACL di konsol Amazon S3, lihat [Mengkonfigurasi ACLs](managing-acls.md). 

Meskipun kami tidak merekomendasikan pendekatan ini, Anda dapat memberikan izin ke grup pengiriman log dengan menggunakan bucket ACL. Namun, jika bucket tujuan menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, Anda tidak dapat menyetel bucket atau objek ACLs. Anda juga tidak dapat menyertakan pemberian tujuan (juga dikenal sebagai *pemberian target*) dalam konfigurasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html) Anda. Sebagai gantinya, Anda harus menggunakan kebijakan bucket untuk memberikan akses ke pengguna utama layanan logging (`logging.s3.amazonaws.com`). Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general).

Di bucket ACL, grup pengiriman log direpresentasikan dengan URL berikut:

```
1. http://acs.amazonaws.com/groups/s3/LogDelivery
```

Untuk memberikan izin `WRITE` dan `READ_ACP` (ACL baca), menambahkan pemberian berikut ini ke ACL bucket tujuan:

```
 1. <Grant>
 2.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 3.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
 4.     </Grantee>
 5.     <Permission>WRITE</Permission>
 6. </Grant>
 7. <Grant>
 8.     <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:type="Group">
 9.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> 
10.     </Grantee>
11.     <Permission>READ_ACP</Permission>
12. </Grant>
```

Untuk contoh penambahan pemberian ACL secara terprogram, lihat [Mengkonfigurasi ACLs](managing-acls.md).

**penting**  
Saat Anda mengaktifkan pencatatan akses server Amazon S3 dengan menggunakan AWS CloudFormation pada bucket dan Anda gunakan ACLs untuk memberikan akses ke grup pengiriman log S3, Anda juga harus menambahkan "`AccessControl": "LogDeliveryWrite"`ke template Anda. CloudFormation Melakukannya penting karena Anda dapat memberikan izin tersebut hanya dengan membuat ACL untuk bucket, tetapi Anda tidak dapat membuat custom ACLs untuk bucket. CloudFormation Anda hanya dapat menggunakan kaleng ACLs dengan CloudFormation.

## Untuk mengaktifkan pencatatan log akses server
<a name="enable-server-logging"></a>

Untuk mengaktifkan pencatatan akses server menggunakan konsol Amazon S3, Amazon S3 REST API AWS SDKs, AWS CLI dan, gunakan prosedur berikut.

### Menggunakan konsol S3
<a name="server-access-logging"></a>

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

1. Di panel navigasi kiri, pilih **Bucket tujuan umum**.

1. Dalam daftar bucket, pilih nama bucket yang ingin Anda aktifkan pencatatan akses server.

1. Pilih **Properti**.

1. Di **Pencatatan akses server** bagian, pilih **Edit**.

1. Di bawah **Pencatatan akses server**, pilih **Aktifkan**. 

1. Di **Bucket tujuan**, tentukan bucket dan prefiks opsional. Jika Anda menentukan prefiks, sebaiknya sertakan garis miring ke depan (`/`) setelah prefiks agar lebih mudah untuk menemukan log Anda. 
**catatan**  
Menentukan prefiks dengan garis miring (`/`) membuatnya lebih mudah bagi Anda untuk menemukan objek log. Misalnya, jika Anda menentukan nilai prefiks`logs/`, setiap objek log yang dibuat Amazon S3 dimulai dengan prefiks `logs/` pada kuncinya, sebagai berikut:  

   ```
   logs/2013-11-01-21-32-16-E568B2907131C0C0
   ```
Jika Anda menentukan nilai prefiks `logs`, objek log muncul sebagai berikut:  

   ```
   logs2013-11-01-21-32-16-E568B2907131C0C0
   ```

1. Di bawah **Format kunci objek log **, lakukan salah satu langkah berikut:
   + Untuk memilih non-date-based partisi, pilih **[DestinationPrefix] [YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - []**. UniqueString
   + ****Untuk memilih partisi berbasis tanggal, pilih **[DestinationPrefix] []/[]/[SourceAccountId]/[SourceRegionYYYYSourceBucket]/[MM]/[DD]/[YYYY] - [MM] - [DD] - [hh] - [mm] - [ss] - [], lalu pilih waktu acara S3 atau Waktu pengiriman file log**. UniqueString****

1. Pilih **Simpan perubahan**.

   Saat Anda mengaktifkan pencatatan log akses server pada bucket, konsol keduanya memungkinkan pencatatan log pada bucket sumber dan memperbarui kebijakan bucket untuk bucket tujuan guna memberikan izin `s3:PutObject` kepada pengguna utama layanan pencatatan log (`logging.s3.amazonaws.com`). Untuk informasi lebih lanjut tentang kebijakan bucket ini, lihat [Berikan izin kepada pengguna utama layanan logging dengan menggunakan kebijakan bucket](#grant-log-delivery-permissions-bucket-policy).

   Anda dapat melihat pencatatan di dalam bucket tujuan. Setelah Anda mengaktifkan pencatatan akses server, mungkin perlu beberapa jam sebelum pencatatan dikirim ke bucket target. Untuk informasi selengkapnya tentang bagaimana dan kapan log dikirim, lihat [Bagaimana log dikirimkan?](ServerLogs.md#how-logs-delivered)

Untuk informasi selengkapnya, lihat [Melihat properti untuk bucket tujuan umum S3](view-bucket-properties.md).

### Penggunaan API REST
<a name="enable-logging-rest"></a>

Untuk mengaktifkan pencatatan log, Anda mengirimkan permintaan [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html) untuk menambahkan konfigurasi pencatatan log di bucket sumber. Permintaan menentukan bucket tujuan (juga dikenal sebagai *bucket target*) dan, secara opsional, prefiks yang akan digunakan dengan semua kunci objek log. 

Contoh berikut mengidentifikasi `amzn-s3-demo-destination-bucket` sebagai bucket tujuan, dan *`logs/`*sebagai prefiks. 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2.   <LoggingEnabled>
3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
4.     <TargetPrefix>logs/</TargetPrefix>
5.   </LoggingEnabled>
6. </BucketLoggingStatus>
```

Contoh berikut mengidentifikasi `amzn-s3-demo-destination-bucket` sebagai bucket tujuan, *`logs/`* sebagai prefiks, dan `EventTime` sebagai format kunci objek log. 

```
 1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
 2.   <LoggingEnabled>
 3.     <TargetBucket>amzn-s3-demo-destination-bucket</TargetBucket>
 4.     <TargetPrefix>logs/</TargetPrefix>
 5.     <TargetObjectKeyFormat>
 6.       <PartitionedPrefix>
 7.          <PartitionDateSource>EventTime</PartitionDateSource>
 8.       </PartitionedPrefix>
 9.   </TargetObjectKeyFormat>
10.   </LoggingEnabled>
11. </BucketLoggingStatus>
```

Objek log ditulis dan dimiliki oleh akun pengiriman log S3, dan pemilik bucket diberi izin penuh pada objek log. Anda dapat secara opsional menggunakan pemberian tujuan (juga dikenal sebagai *pemberian target*) untuk memberikan izin kepada pengguna lain sehingga mereka dapat mengakses log. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html). 

**catatan**  
Jika bucket tujuan menggunakan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, Anda tidak dapat menggunakan pemberian tujuan untuk memberikan izin kepada pengguna lain. Untuk memberikan izin kepada orang lain, Anda dapat memperbarui kebijakan bucket di bucket tujuan. Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general). 

Untuk mengambil konfigurasi logging pada bucket, gunakan operasi API [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlogging.html). 

Untuk menghapus konfigurasi pencatatan log, Anda mengirimkan `PutBucketLogging` permintaan dengan `BucketLoggingStatus` yang kosong: 

```
1. <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01">
2. </BucketLoggingStatus>
```

Untuk mengaktifkan logging pada bucket, Anda dapat menggunakan Amazon S3 API atau pustaka pembungkus AWS SDK.

### Menggunakan AWS SDKs
<a name="enable-logging-sdk"></a>

Contoh berikut mengaktifkan pencatatan log ke bucket. Anda harus membuat dua bucket, satu bucket sumber, dan satu bucket tujuan (target). Contoh ini memperbarui bucket ACL di bucket tujuan terlebih dahulu. Mereka kemudian memberikan ke grup pengiriman log izin yang diperlukan untuk menulis log ke bucket tujuan, dan kemudian mereka mengaktifkan pencatatan log ke bucket sumber. 

Contoh ini tidak akan berfungsi pada bucket tujuan yang menggunakan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek.

Jika bucket tujuan (target) menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, Anda tidak dapat menyetel bucket atau objek ACLs. Anda juga tidak dapat menyertakan hibah tujuan (target) dalam [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)konfigurasi Anda. Anda harus menggunakan kebijakan bucket untuk memberikan akses ke pengguna utama layanan pencatatan (`logging.s3.amazonaws.com`). Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general).

------
#### [ .NET ]

**SDK untuk .NET**  
 Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara mengatur dan menjalankannya di [Repositori Contoh Kode AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/S3#code-examples). 

```
    using System;
    using System.IO;
    using System.Threading.Tasks;
    using Amazon.S3;
    using Amazon.S3.Model;
    using Microsoft.Extensions.Configuration;

    /// <summary>
    /// This example shows how to enable logging on an Amazon Simple Storage
    /// Service (Amazon S3) bucket. You need to have two Amazon S3 buckets for
    /// this example. The first is the bucket for which you wish to enable
    /// logging, and the second is the location where you want to store the
    /// logs.
    /// </summary>
    public class ServerAccessLogging
    {
        private static IConfiguration _configuration = null!;

        public static async Task Main()
        {
            LoadConfig();

            string bucketName = _configuration["BucketName"];
            string logBucketName = _configuration["LogBucketName"];
            string logObjectKeyPrefix = _configuration["LogObjectKeyPrefix"];
            string accountId = _configuration["AccountId"];

            // If the AWS Region defined for your default user is different
            // from the Region where your Amazon S3 bucket is located,
            // pass the Region name to the Amazon S3 client object's constructor.
            // For example: RegionEndpoint.USWest2 or RegionEndpoint.USEast2.
            IAmazonS3 client = new AmazonS3Client();

            try
            {
                // Update bucket policy for target bucket to allow delivery of logs to it.
                await SetBucketPolicyToAllowLogDelivery(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix,
                    accountId);

                // Enable logging on the source bucket.
                await EnableLoggingAsync(
                    client,
                    bucketName,
                    logBucketName,
                    logObjectKeyPrefix);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine($"Error: {e.Message}");
            }
        }

        /// <summary>
        /// This method grants appropriate permissions for logging to the
        /// Amazon S3 bucket where the logs will be stored.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to apply the bucket policy.</param>
        /// <param name="sourceBucketName">The name of the source bucket.</param>
        /// <param name="logBucketName">The name of the bucket where logging
        /// information will be stored.</param>
        /// <param name="logPrefix">The logging prefix where the logs should be delivered.</param>
        /// <param name="accountId">The account id of the account where the source bucket exists.</param>
        /// <returns>Async task.</returns>
        public static async Task SetBucketPolicyToAllowLogDelivery(
            IAmazonS3 client,
            string sourceBucketName,
            string logBucketName,
            string logPrefix,
            string accountId)
        {
            var resourceArn = @"""arn:aws:s3:::" + logBucketName + "/" + logPrefix + @"*""";

            var newPolicy = @"{
                                ""Statement"":[{
                                ""Sid"": ""S3ServerAccessLogsPolicy"",
                                ""Effect"": ""Allow"",
                                ""Principal"": { ""Service"": ""logging.s3.amazonaws.com"" },
                                ""Action"": [""s3:PutObject""],
                                ""Resource"": [" + resourceArn + @"],
                                ""Condition"": {
                                ""ArnLike"": { ""aws:SourceArn"": ""arn:aws:s3:::" + sourceBucketName + @""" },
                                ""StringEquals"": { ""aws:SourceAccount"": """ + accountId + @""" }
                                        }
                                    }]
                                }";
            Console.WriteLine($"The policy to apply to bucket {logBucketName} to enable logging:");
            Console.WriteLine(newPolicy);

            PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest
            {
                BucketName = logBucketName,
                Policy = newPolicy,
            };
            await client.PutBucketPolicyAsync(putRequest);
            Console.WriteLine("Policy applied.");
        }

        /// <summary>
        /// This method enables logging for an Amazon S3 bucket. Logs will be stored
        /// in the bucket you selected for logging. Selected prefix
        /// will be prepended to each log object.
        /// </summary>
        /// <param name="client">The initialized Amazon S3 client which will be used
        /// to configure and apply logging to the selected Amazon S3 bucket.</param>
        /// <param name="bucketName">The name of the Amazon S3 bucket for which you
        /// wish to enable logging.</param>
        /// <param name="logBucketName">The name of the Amazon S3 bucket where logging
        /// information will be stored.</param>
        /// <param name="logObjectKeyPrefix">The prefix to prepend to each
        /// object key.</param>
        /// <returns>Async task.</returns>
        public static async Task EnableLoggingAsync(
            IAmazonS3 client,
            string bucketName,
            string logBucketName,
            string logObjectKeyPrefix)
        {
            Console.WriteLine($"Enabling logging for bucket {bucketName}.");
            var loggingConfig = new S3BucketLoggingConfig
            {
                TargetBucketName = logBucketName,
                TargetPrefix = logObjectKeyPrefix,
            };

            var putBucketLoggingRequest = new PutBucketLoggingRequest
            {
                BucketName = bucketName,
                LoggingConfig = loggingConfig,
            };
            await client.PutBucketLoggingAsync(putBucketLoggingRequest);
            Console.WriteLine($"Logging enabled.");
        }

        /// <summary>
        /// Loads configuration from settings files.
        /// </summary>
        public static void LoadConfig()
        {
            _configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("settings.json") // Load settings from .json file.
                .AddJsonFile("settings.local.json", true) // Optionally, load local settings.
                .Build();
        }
    }
```
+  Untuk detail API, lihat [PutBucketLogging](https://docs.aws.amazon.com/goto/DotNetSDKV3/s3-2006-03-01/PutBucketLogging)di *Referensi AWS SDK untuk .NET API*. 

------
#### [ Java ]

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketLoggingStatus;
import software.amazon.awssdk.services.s3.model.LoggingEnabled;
import software.amazon.awssdk.services.s3.model.PartitionedPrefix;
import software.amazon.awssdk.services.s3.model.PutBucketLoggingRequest;
import software.amazon.awssdk.services.s3.model.TargetObjectKeyFormat;

// Class to set a bucket policy on a target S3 bucket and enable server access logging on a source S3 bucket.
public class ServerAccessLogging {
    private static S3Client s3Client;

    public static void main(String[] args) {
        String sourceBucketName = "SOURCE-BUCKET";
        String targetBucketName = "TARGET-BUCKET";
        String sourceAccountId = "123456789012";
        String targetPrefix = "logs/";

        // Create S3 Client.
        s3Client = S3Client.builder().
                region(Region.US_EAST_2)
                .build();

        // Set a bucket policy on the target S3 bucket to enable server access logging by granting the
        // logging.s3.amazonaws.com principal permission to use the PutObject operation.
        ServerAccessLogging serverAccessLogging = new ServerAccessLogging();
        serverAccessLogging.setTargetBucketPolicy(sourceAccountId, sourceBucketName, targetBucketName);

        // Enable server access logging on the source S3 bucket.
        serverAccessLogging.enableServerAccessLogging(sourceBucketName, targetBucketName,
                targetPrefix);

    }

    // Function to set a bucket policy on the target S3 bucket to enable server access logging by granting the
    // logging.s3.amazonaws.com principal permission to use the PutObject operation.
    public void setTargetBucketPolicy(String sourceAccountId, String sourceBucketName, String targetBucketName) {
        String policy = "{\n" +
                "    \"Version\": \"2012-10-17\",\n" +
                "    \"Statement\": [\n" +
                "        {\n" +
                "            \"Sid\": \"S3ServerAccessLogsPolicy\",\n" +
                "            \"Effect\": \"Allow\",\n" +
                "            \"Principal\": {\"Service\": \"logging.s3.amazonaws.com\"},\n" +
                "            \"Action\": [\n" +
                "                \"s3:PutObject\"\n" +
                "            ],\n" +
                "            \"Resource\": \"arn:aws:s3:::" + targetBucketName + "/*\",\n" +
                "            \"Condition\": {\n" +
                "                \"ArnLike\": {\n" +
                "                    \"aws:SourceArn\": \"arn:aws:s3:::" + sourceBucketName + "\"\n" +
                "                },\n" +
                "                \"StringEquals\": {\n" +
                "                    \"aws:SourceAccount\": \"" + sourceAccountId + "\"\n" +
                "                }\n" +
                "            }\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        s3Client.putBucketPolicy(b -> b.bucket(targetBucketName).policy(policy));
    }

    // Function to enable server access logging on the source S3 bucket.
    public void enableServerAccessLogging(String sourceBucketName, String targetBucketName,
            String targetPrefix) {
        TargetObjectKeyFormat targetObjectKeyFormat = TargetObjectKeyFormat.builder()
                .partitionedPrefix(PartitionedPrefix.builder().partitionDateSource("EventTime").build())
                .build();
        LoggingEnabled loggingEnabled = LoggingEnabled.builder()
                .targetBucket(targetBucketName)
                .targetPrefix(targetPrefix)
                .targetObjectKeyFormat(targetObjectKeyFormat)
                .build();
        BucketLoggingStatus bucketLoggingStatus = BucketLoggingStatus.builder()
                .loggingEnabled(loggingEnabled)
                .build();
        s3Client.putBucketLogging(PutBucketLoggingRequest.builder()
                .bucket(sourceBucketName)
                .bucketLoggingStatus(bucketLoggingStatus)
                .build());
    }

}
```

------

### Menggunakan AWS CLI
<a name="enabling-s3-access-logs-for-requests"></a>

Kami menyarankan Anda membuat bucket logging khusus di setiap bucket S3 Wilayah AWS yang Anda miliki. Kemudian, mintalah log akses Amazon S3 dikirimkan ke bucket S3 tersebut. Untuk informasi dan contoh selengkapnya, lihat [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-logging.html) di *Referensi AWS CLI *.

Jika bucket tujuan (target) menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, Anda tidak dapat menyetel bucket atau objek ACLs. Anda juga tidak dapat menyertakan hibah tujuan (target) dalam [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)konfigurasi Anda. Anda harus menggunakan kebijakan bucket untuk memberikan akses ke pengguna utama layanan pencatatan (`logging.s3.amazonaws.com`). Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general).

**Example — Mengaktifkan pencatatan akses dengan lima bucket di dua Wilayah**  
Dalam contoh ini, Anda memiliki lima bucket berikut:   
+ `amzn-s3-demo-source-bucket-us-east-1`
+ `amzn-s3-demo-source-bucket1-us-east-1`
+ `amzn-s3-demo-source-bucket2-us-east-1`
+ `amzn-s3-demo-bucket1-us-west-2`
+ `amzn-s3-demo-bucket2-us-west-2`
**catatan**  
Langkah terakhir dari prosedur berikut memberikan contoh skrip bash yang dapat Anda gunakan untuk membuat bucket logging Anda dan mengaktifkan log akses server pada bucket ini. Untuk menggunakan skrip tersebut, Anda harus membuat file `policy.json` dan `logging.json`, seperti yang dijelaskan dalam prosedur berikut.

1. Buat dua bucket pencatatan di Wilayah AS Barat (Oregon) dan AS Timur (Virginia Utara), dan beri mereka nama-nama berikut ini:
   + `amzn-s3-demo-destination-bucket-logs-us-east-1`
   + `amzn-s3-demo-destination-bucket1-logs-us-west-2`

1. Kemudian dalam langkah-langkah ini, Anda akan mengaktifkan pencatatan akses server sebagai berikut:
   + `amzn-s3-demo-source-bucket-us-east-1` menyimpan log ke bucket S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` dengan prefiks `amzn-s3-demo-source-bucket-us-east-1`
   + `amzn-s3-demo-source-bucket1-us-east-1` menyimpan log ke bucket S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` dengan prefiks `amzn-s3-demo-source-bucket1-us-east-1`
   + `amzn-s3-demo-source-bucket2-us-east-1` menyimpan log ke bucket S3 `amzn-s3-demo-destination-bucket-logs-us-east-1` dengan prefiks `amzn-s3-demo-source-bucket2-us-east-1`
   + `amzn-s3-demo-bucket1-us-west-2` menyimpan log ke bucket S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` dengan prefiks `amzn-s3-demo-bucket1-us-west-2`
   + `amzn-s3-demo-bucket2-us-west-2` menyimpan log ke bucket S3 `amzn-s3-demo-destination-bucket1-logs-us-west-2` dengan prefiks `amzn-s3-demo-bucket2-us-west-2`

1. Untuk setiap bucket logging tujuan, berikan izin untuk pengiriman log akses server dengan menggunakan bucket ACL *atau* kebijakan bucket:
   + **Perbarui kebijakan bucket** (Disarankan)–Untuk memberikan izin kepada pengguna utama layanan logging, gunakan perintah `put-bucket-policy` berikut. Ganti `amzn-s3-demo-destination-bucket-logs` dengan nama bucket tujuan Anda.

     ```
     1. aws s3api put-bucket-policy --bucket amzn-s3-demo-destination-bucket-logs --policy file://policy.json
     ```

     `Policy.json` adalah dokumen JSON di dalam folder saat ini, yang berisi kebijakan bucket berikut. Untuk menggunakan kebijakan bucket ini, ganti `user input placeholders` dengan informasi Anda sendiri. Dalam kebijakan berikut, *`amzn-s3-demo-destination-bucket-logs`*adalah bucket tujuan tempat log akses server akan dikirimkan, dan `amzn-s3-demo-source-bucket` merupakan bucket sumber. `SOURCE-ACCOUNT-ID` adalah Akun AWS yang memiliki bucket sumber.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "S3ServerAccessLogsPolicy",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "logging.s3.amazonaws.com"
                 },
                 "Action": [
                     "s3:PutObject"
                 ],
                 "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket-logs/*",
                 "Condition": {
                     "ArnLike": {
                         "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
                     },
                     "StringEquals": {
                         "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                     }
                 }
             }
         ]
     }
     ```

------
   + **Perbarui bucket ACL**—Untuk memberikan izin ke grup pengiriman log S3, gunakan perintah `put-bucket-acl` berikut. Ganti *`amzn-s3-demo-destination-bucket-logs`* dengan nama bucket tujuan (target) Anda.

     ```
     1. aws s3api put-bucket-acl --bucket amzn-s3-demo-destination-bucket-logs  --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery 
     ```

1. Kemudian, buat file `logging.json` yang berisi konfigurasi logging Anda (berdasarkan salah satu dari tiga contoh berikut). Setelah Anda membuat file `logging.json`, Anda dapat menerapkan konfigurasi logging dengan menggunakan perintah `put-bucket-logging` berikut. Ganti *`amzn-s3-demo-destination-bucket-logs`* dengan nama bucket tujuan (target) Anda.

   ```
   1. aws s3api put-bucket-logging --bucket amzn-s3-demo-destination-bucket-logs --bucket-logging-status file://logging.json 
   ```
**catatan**  
Alih-alih menggunakan perintah `put-bucket-logging` ini untuk menerapkan konfigurasi logging pada setiap bucket tujuan, Anda dapat menggunakan salah satu skrip bash yang disediakan di langkah berikutnya. Untuk menggunakan skrip tersebut, Anda harus membuat file `policy.json` dan `logging.json`, seperti yang dijelaskan dalam prosedur ini.

   File `logging.json` ini adalah dokumen JSON di folder saat ini yang berisi konfigurasi pencatatan log. Jika bucket tujuan menggunakan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, konfigurasi logging Anda tidak dapat berisi pemberian tujuan (target). Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general).  
**Example – `logging.json` tanpa pemberian tujuan (target)**  

   File contoh `logging.json` berikut tidak berisi pemberian tujuan (target). Oleh karena itu, Anda dapat menerapkan konfigurasi ini ke bucket tujuan (target) yang menggunakan pengaturan yang diterapkan pemilik Bucket untuk Kepemilikan Objek.

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/"
          }
      }
   ```  
**Example – `logging.json` dengan pemberian tujuan (target)**  

   File contoh `logging.json` berikut berisi pemberian tujuan (target).

   Jika bucket tujuan menggunakan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, Anda tidak dapat menyertakan pemberian tujuan (target) dalam konfigurasi [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html) Anda. Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](#grant-log-delivery-permissions-general).

   ```
     {
         "LoggingEnabled": {
             "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
             "TargetPrefix": "amzn-s3-demo-destination-bucket/",
             "TargetGrants": [
                  {
                     "Grantee": {
                         "Type": "CanonicalUser",
                         "ID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be"
                      },
                     "Permission": "FULL_CONTROL"
                  }
              ]
          }
      }
   ```

**Nilai penerima hibah**  
Anda dapat menentukan orang (penerima hibah) kepada siapa Anda menetapkan hak akses (dengan menggunakan elemen permintaan) dengan cara berikut:
   + Dengan ID orang tersebut:

     ```
     {
       "Grantee": {
         "Type": "CanonicalUser",
         "ID": "ID"
       }
     }
     ```
   + Oleh URI:

     ```
     {
       "Grantee": {
         "Type": "Group",
         "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers"
       }
     }
     ```  
**Example - `logging.json` dengan format kunci objek log yang diatur ke waktu peristiwa S3**  

   File `logging.json` berikut mengubah format kunci objek log ke waktu peristiwa S3. Untuk informasi selengkapnya tentang pengaturan format kunci objek log, lihat [Bagaimana cara mengaktifkan log pengiriman?](ServerLogs.md#server-access-logging-overview)

   ```
     { 
       "LoggingEnabled": {
           "TargetBucket": "amzn-s3-demo-destination-bucket-logs",
           "TargetPrefix": "amzn-s3-demo-destination-bucket/",
           "TargetObjectKeyFormat": { 
               "PartitionedPrefix": { 
                   "PartitionDateSource": "EventTime" 
               }
            }
       }
   }
   ```

1. Gunakan salah satu skrip bash berikut untuk menambahkan pencatatan log akses untuk semua bucket dalam akun Anda. Ganti *`amzn-s3-demo-destination-bucket-logs`* dengan nama bucket tujuan (target) Anda, dan ganti `us-west-2` dengan nama Wilayah tempat bucket Anda berada.
**catatan**  
Script ini hanya berfungsi jika semua bucket Anda berada di Wilayah yang sama. Jika Anda memiliki bucket di beberapa Wilayah, Anda harus menyesuaikan skrip-nya.   
**Example – Memberikan akses dengan kebijakan bucket dan menambahkan logging untuk bucket di akun Anda**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```  
**Example — Berikan akses dengan bucket ACLs dan tambahkan logging untuk bucket di akun Anda**  

   ```
     loggingBucket='amzn-s3-demo-destination-bucket-logs'
     region='us-west-2'
     
     
     # Create the logging bucket.
     aws s3 mb s3://$loggingBucket --region $region
     
     aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery
     
     # List the buckets in this account.
     buckets="$(aws s3 ls | awk '{print $3}')"
     
     # Put a bucket logging configuration on each bucket.
     for bucket in $buckets
         do 
           # This if statement excludes the logging bucket.
           if [ "$bucket" == "$loggingBucket" ] ; then
               continue;
           fi
           printf '{
             "LoggingEnabled": {
               "TargetBucket": "%s",
               "TargetPrefix": "%s/"
           }
         }' "$loggingBucket" "$bucket"  > logging.json
         aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json
         echo "$bucket done"
     done
     
     rm logging.json
     
     echo "Complete"
   ```

## Memverifikasi penyiapan log akses server Anda
<a name="verify-access-logs"></a>

Setelah Anda mengaktifkan pencatatan akses server, lakukan langkah berikut: 
+ Akses bucket tujuan dan verifikasi bahwa file log sedang dikirim. Setelah log akses disiapkan, Amazon S3 segera mulai menangkap permintaan dan mencatatnya. Namun, mungkin perlu beberapa jam sebelum log dikirim ke ember tujuan. Untuk informasi selengkapnya, lihat [Perubahan status pencatatan log bucket memerlukan waktu](ServerLogs.md#BucketLoggingStatusChanges) dan [Pengiriman log server dengan upaya terbaik](ServerLogs.md#LogDeliveryBestEffort).

  Anda juga dapat memverifikasi pengiriman log secara otomatis dengan menggunakan metrik permintaan Amazon S3 dan menyiapkan CloudWatch alarm Amazon untuk metrik ini. Untuk informasi selengkapnya, lihat [Memantau metrik dengan Amazon CloudWatch](cloudwatch-monitoring.md).
+ Verifikasi bahwa Anda dapat membuka dan membaca isi file log.

Untuk informasi pemecahan masalah pencatatan akses server, lihat [Memecahkan masalah pencatatan akses server](troubleshooting-server-access-logging.md).

# Server Amazon S3 mengakses format log
<a name="LogFormat"></a>

Pencatatan akses server menyediakan catatan terperinci untuk permintaan yang dilakukan ke bucket Amazon S3 Anda. Anda dapat menggunakan log akses server untuk tujuan berikut: 
+ Melakukan audit keamanan dan akses
+ Belajar tentang basis pelanggan Anda
+ Memahami tagihan Amazon S3 Anda

Bagian ini menjelaskan format dan detail lain tentang file log akses server Amazon S3.

Berkas log akses server terdiri atas urutan catatan log yang dibatasi di baris baru. Setiap catatan log mewakili satu permintaan dan terdiri dari bidang dengan ruang terbatas.

Berikut ini adalah contoh log yang terdiri dari lima catatan log.

**catatan**  
Bidang apa pun dapat diatur menjadi `-` untuk menunjukkan bahwa data tidak diketahui atau tidak tersedia, atau bahwa bidang tidak berlaku untuk permintaan ini. 

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 891CE47D2EXAMPLE REST.GET.LOGGING_STATUS - "GET /amzn-s3-demo-bucket1?logging HTTP/1.1" 200 - 242 - 11 - "-" "S3Console/0.4" - 9vKBE6vMhrNiWHZmb2L0mXOcqPGzQOI5XLnCtZNPxev+Hf+7tpT6sxDwDty4LHBUOZJG96N1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be A1206F460EXAMPLE REST.GET.BUCKETPOLICY - "GET /amzn-s3-demo-bucket1?policy HTTP/1.1" 404 NoSuchBucketPolicy 297 - 38 - "-" "S3Console/0.4" - BNaBsXZQQDbssi6xMBdBU2sLt+Yf5kZDmeBUP35sFoKa3sLLeMC78iwEIWxs99CRUrbS4n11234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:00 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 7B4A0FABBEXAMPLE REST.GET.VERSIONING - "GET /amzn-s3-demo-bucket1?versioning HTTP/1.1" 200 - 113 - 33 - "-" "S3Console/0.4" - Ke1bUcazaN1jWuUlPJaxF64cQVpUEhoZKEG/hmy/gijN/I1DeWqDfFvnpybfEseEME/u7ME1234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - - us-east-1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be amzn-s3-demo-bucket1 [06/Feb/2019:00:01:57 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DD6CC733AEXAMPLE REST.PUT.OBJECT s3-dg.pdf "PUT /amzn-s3-demo-bucket1/s3-dg.pdf HTTP/1.1" 200 - - 4406583 41754 28 "-" "S3Console/0.4" - 10S62Zv81kBW7BB6SX4XJ48o6kpcl6LPwEoizZQQxJd5qDSCTLX0TgS37kYUBKQW3+bPdrg1234= SigV4 ECDHE-RSA-AES128-SHA AuthHeader amzn-s3-demo-bucket1.s3.us-west-1.amazonaws.com TLSV1.2 - Yes us-east-1
```

Berikut ini adalah contoh catatan log untuk operasi **checksum Compute**:

```
7cd47ef2be amzn-s3-demo-bucket [06/Feb/2019:00:00:38 +0000] - 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be e5042925-b524-4b3b-a869-f3881e78ff3a S3.COMPUTE.OBJECT.CHECKSUM example-object - - - - 1048576 - - - - - bPf7qjG4XwYdPgDQTl72GW/uotRhdPz2UryEyAFLDSRmKrakUkJCYLtAw6fdANcrsUYc1M/kIulXM1u5vZQT5g== - - - - - - - -
```

**Topics**
+ [

## Bidang catatan log
](#log-record-fields)
+ [

## Pencatatan Tambahan untuk operasi penyalinan
](#AdditionalLoggingforCopyOperations)
+ [

## Informasi log akses kustom
](#LogFormatCustom)
+ [

## Pertimbangan pemrograman untuk format log akses server yang dapat diperluas
](#LogFormatExtensible)

## Bidang catatan log
<a name="log-record-fields"></a>

Daftar berikut menjelaskan bidang catatan log.

**Pemilik Bucket**  
ID pengguna resmi dari pemilik bucket sumber. ID pengguna kanonik adalah bentuk lain dari ID. Akun AWS Untuk informasi selengkapnya tentang ID pengguna kanonik, lihat [Akun AWS pengidentifikasi](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) di *Referensi Umum AWS*. Untuk informasi tentang cara menemukan ID pengguna kanonik untuk akun Anda, lihat [Menemukan ID Pengguna kanonik Akun AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) Anda.  
**Entri contoh**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
Nama bucket tempat permintaan diproses untuk dibandingkan. Jika sistem menerima permintaan yang salah bentuknya dan tidak dapat menentukan bucket, permintaan tidak akan muncul di log akses server apa pun.  
**Entri contoh**  

```
amzn-s3-demo-bucket1
```

**Waktu**  
Waktu pada saat permintaan diterima; tanggal dan waktu ini berada dalam Waktu Universal Terkoordinasi (UTC). Formatnya, menggunakan terminologi `strftime()`, yaitu sebagai berikut: `[%d/%b/%Y:%H:%M:%S %z]`  
**Entri contoh**  

```
[06/Feb/2019:00:00:38 +0000]
```

**IP Jarak Jauh**  
Alamat IP yang jelas dari pemohon. Proxy perantara dan firewall mungkin mengaburkan alamat IP aktual perangkat yang membuat permintaan.  
**Entri contoh**  

```
192.0.2.3
```

**Peminta**  
ID pengguna kanonik pemohon, atau `-` untuk permintaan yang tidak terautentikasi. Jika pemohon adalah pengguna IAM, bidang ini mengembalikan nama pengguna IAM pemohon bersama dengan Akun AWS yang dimiliki pengguna IAM. Pengidentifikasi ini sama dengan yang digunakan untuk tujuan kontrol akses.  
**Entri contoh**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Jika pemohon menggunakan peran yang diasumsikan, bidang ini mengembalikan peran IAM yang diasumsikan.  
**Entri contoh**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID Permintaan**  
String yang dibuat oleh Amazon S3 untuk mengidentifikasi setiap permintaan secara unik. Untuk permintaan pekerjaan **checksum Compute**, bidang **ID Permintaan** menampilkan ID pekerjaan terkait. Untuk informasi selengkapnya, lihat [Hitung checksum](batch-ops-compute-checksums.md).  
**Entri contoh**  

```
3E57427F33A59F07
```

**Operasi**  
Operasi yang tercantum di sini dinyatakan sebagai `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type`, atau `BATCH.DELETE.OBJECT`, atau `S3.action.resource_type` untuk [Siklus hidup S3 dan logging](lifecycle-and-other-bucket-config.md#lifecycle-general-considerations-logging). Untuk permintaan [https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-compute-checksums.html)pekerjaan, operasi terdaftar sebagai`S3.COMPUTE.OBJECT.CHECKSUM`.  
**Entri contoh**  

```
REST.PUT.OBJECT
S3.COMPUTE.OBJECT.CHECKSUM
```

**Kunci**  
Kunci (nama objek) bagian dari permintaan.  
**Entri contoh**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
Bagian `Request-URI` dari pesan permintaan HTTP. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri Contoh**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar HTTP/1.1"
```

**Status HTTP**  
Kode status HTTP numerik dari respons.  
**Entri contoh**  

```
200
```

**Kode Kesalahan**  
[Respons Kesalahan](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) Amazon S3, atau `-` jika tidak ada kesalahan yang terjadi.  
**Entri contoh**  

```
NoSuchBucket
```

**Byte Dikirim**  
Jumlah byte respons yang dikirim, tidak termasuk overhead protokol HTTP, atau `-` jika nol.  
**Entri contoh**  

```
2662992
```

**Ukuran Objek**  
Ukuran total objek yang dimaksud.  
**Entri contoh**  

```
3462992
```

**Total Waktu**  
Jumlah milidetik permintaan dalam proses pengiriman dari perspektif server. Nilai ini diukur sejak permintaan Anda diterima hingga byte terakhir respons dikirimkan. Pengukuran yang dibuat dari perspektif klien mungkin lebih lama oleh sebab latensi jaringan.  
**Entri contoh**  

```
70
```

**Waktu Perputaran**  
Jumlah milidetik yang dihabiskan Amazon S3 untuk memproses permintaan Anda. Nilai ini diukur sejak byte terakhir permintaan Anda diterima hingga byte pertama respons dikirim.  
**Entri contoh**  

```
10
```

**Referer**  
Nilai dari header HTTP `Referer`, jika ada. Agen pengguna HTTP (misalnya, browser) biasanya mengatur header ini ke URL dari halaman penautan atau penyematan saat membuat permintaan. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri contoh**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Nilai dari header HTTP `User-Agent`. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri contoh**  

```
"curl/7.15.1"
```

**ID Versi**  
ID versi dalam permintaan, atau `-` jika operasi tidak mengambil `versionId` parameter.  
**Entri contoh**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**Id Host**  
ID permintaan `x-amz-id-2` yang diperluas atau Amazon S3.   
**Entri contoh**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Versi Tanda Tangan**  
Versi tanda tangan, `SigV2` atau `SigV4`, yang digunakan untuk mengautentikasi permintaan atau `-` untuk permintaan tidak terautentikasi.  
**Entri contoh**  

```
SigV2
```

**Rangkaian Penyandian**  
Cipher Transport Layer Security (TLS) yang dinegosiasikan untuk permintaan HTTPS atau untuk HTTP. `-`  
**Entri contoh**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Jenis Autentikasi**  
Jenis autentikasi permintaan yang digunakan, `AuthHeader` untuk header autentikasi, `QueryString` untuk string kueri (URL yang ditandatangani sebelumnya) atau `-` untuk permintaan tidak terautentikasi.  
**Entri contoh**  

```
AuthHeader
```

**Header Host**  
Titik akhir yang digunakan untuk terhubung ke Amazon S3.  
**Entri contoh**  

```
s3.us-west-2.amazonaws.com
```
Beberapa Wilayah sebelumnya mendukung titik akhir lama. Anda mungkin melihat titik akhir ini di log atau AWS CloudTrail log akses server Anda. Untuk informasi selengkapnya, lihat [Titik akhir legasi](VirtualHosting.md#s3-legacy-endpoints). Untuk daftar lengkap titik akhir dan Wilayah Amazon S3, lihat [Titik akhir dan kuota Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) di *Referensi Umum Amazon Web Services*.

**Versi TLS**  
Versi Keamanan Lapisan Pengangkutan (TLS) yang dinegosiasikan oleh klien. Nilai tersebut adalah salah satu dari berikut ini:`TLSv1.1`, `TLSv1.2`, `TLSv1.3`; atau `-` jika TLS tidak digunakan.  
**Entri contoh**  

```
TLSv1.2
```

**Titik Akses ARN**  
Amazon Resource Name (ARN) dari titik akses permintaan. Jika titik akses ARN mengalami kecacatan atau tidak digunakan, bidang akan berisi `-`. Untuk informasi lebih lanjut tentang titik akses, lihat [Menggunakan jalur akses Amazon S3 untuk bucket tujuan umum](using-access-points.md). Untuk informasi selengkapnya ARNs, lihat [Nama Sumber Daya Amazon (ARN) di Panduan AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) *Referensi*.  
**Entri contoh**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
String yang menunjukkan apakah permintaan memerlukan daftar kontrol akses (ACL) untuk otorisasi. Jika permintaan memerlukan ACL untuk otorisasi, stringnya adalah `Yes`. Jika ACLs tidak diperlukan, string adalah`-`. Untuk informasi lebih lanjut tentang ACLs, lihat[Gambaran umum daftar kontrol akses (ACL)](acl-overview.md). Untuk informasi selengkapnya tentang menggunakan `aclRequired` bidang untuk menonaktifkan ACLs, lihat[Mengontrol kepemilikan objek dan menonaktifkan bucket ACLs Anda](about-object-ownership.md).   
**Entri contoh**  

```
Yes
```

**Wilayah sumber**  
 AWS Wilayah dari mana permintaan itu berasal. Bidang ini menunjukkan tanda hubung (`-`) ketika wilayah asal tidak dapat ditentukan (seperti PrivateLink koneksi, koneksi Direct Connect, Bring your own IP address (BYOIP), atau AWS non-IP address) atau ketika log dihasilkan oleh operasi yang dipicu berdasarkan kebijakan atau tindakan yang ditetapkan pelanggan, seperti siklus hidup dan checksum.  
**Entri contoh**  

```
us-east-1
```

## Pencatatan Tambahan untuk operasi penyalinan
<a name="AdditionalLoggingforCopyOperations"></a>

Sebuah operasi penyalinan melibatkan `GET` dan sebuah `PUT`. Karena alasan tersebut, kami mencatat dua catatan saat melakukan operasi penyalinan. Bagian sebelumnya menguraikan bidang yang terkait dengan bagian `PUT` dari operasi. Daftar berikut menjelaskan kolom dalam catatan yang berhubungan dengan bagian `GET` dari operasi penyalinan.

**Pemilik Bucket**  
ID pengguna resmi dari bucket yang menyimpan objek yang disalin. ID pengguna kanonik adalah bentuk lain dari ID. Akun AWS Untuk informasi selengkapnya tentang ID pengguna kanonik, lihat [Akun AWS pengidentifikasi](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) di *Referensi Umum AWS*. Untuk informasi tentang cara menemukan ID pengguna kanonik untuk akun Anda, lihat [Menemukan ID Pengguna kanonik Akun AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) Anda.  
**Entri contoh**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```

**Bucket**  
Nama bucket yang menyimpan objek yang disalin.  
**Entri contoh**  

```
amzn-s3-demo-bucket1
```

**Waktu**  
Waktu pada saat permintaan diterima; tanggal dan waktu ini berada dalam Waktu Universal Terkoordinasi (UTC). Formatnya, menggunakan terminologi `strftime()`, yaitu sebagai berikut: `[%d/%B/%Y:%H:%M:%S %z]`  
**Entri contoh**  

```
[06/Feb/2019:00:00:38 +0000]
```

**IP Jarak Jauh**  
Alamat IP yang jelas dari pemohon. Proxy perantara dan firewall mungkin mengaburkan alamat IP aktual perangkat yang membuat permintaan.  
**Entri contoh**  

```
192.0.2.3
```

**Peminta**  
ID pengguna kanonik pemohon, atau `-` untuk permintaan yang tidak terautentikasi. Jika pemohon adalah pengguna IAM, bidang ini akan mengembalikan nama pengguna IAM pemohon bersama dengan Pengguna root akun AWS yang dimiliki pengguna IAM. Pengidentifikasi ini sama dengan yang digunakan untuk tujuan kontrol akses.  
**Entri contoh**  

```
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be
```
Jika pemohon menggunakan peran yang diasumsikan, bidang ini mengembalikan peran IAM yang diasumsikan.  
**Entri contoh**  

```
arn:aws:sts::123456789012:assumed-role/roleName/test-role
```

**ID Permintaan**  
String yang dibuat oleh Amazon S3 untuk mengidentifikasi setiap permintaan secara unik. Untuk permintaan pekerjaan **checksum Compute**, bidang **ID Permintaan** menampilkan ID pekerjaan terkait. Untuk informasi selengkapnya, lihat [Hitung checksum](batch-ops-compute-checksums.md).  
**Entri contoh**  

```
3E57427F33A59F07
```

**Operasi**  
Operasi yang tercantum di sini dinyatakan sebagai `SOAP.operation`, `REST.HTTP_method.resource_type`, `WEBSITE.HTTP_method.resource_type`, atau `BATCH.DELETE.OBJECT`.  
**Entri contoh**  

```
REST.COPY.OBJECT_GET
```

**Kunci**  
Kunci (nama objek) dari objek yang disalin, atau `-` jika operasi tidak mengambil parameter kunci.   
**Entri contoh**  

```
/photos/2019/08/puppy.jpg
```

**Request-URI**  
Bagian `Request-URI` dari pesan permintaan HTTP. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri contoh**  

```
"GET /amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-foo=bar"
```

**Status HTTP**  
Kode status HTTP numerik dari bagian `GET` dari operasi penyalinan.  
**Entri contoh**  

```
200
```

**Kode Kesalahan**  
[Respons Kesalahan](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) Amazon S3 dari `GET` bagian operasi penyalinan, atau `-` jika tidak terjadi kesalahan.  
**Entri contoh**  

```
NoSuchBucket
```

**Byte Dikirim**  
Jumlah byte respons yang dikirim, tidak termasuk overhead protokol HTTP, atau `-` jika nol.  
**Entri contoh**  

```
2662992
```

**Ukuran Objek**  
Ukuran total objek yang dimaksud.  
**Entri contoh**  

```
3462992
```

**Total Waktu**  
Jumlah milidetik permintaan dalam proses pengiriman dari perspektif server. Nilai ini diukur sejak permintaan Anda diterima hingga byte terakhir respons dikirimkan. Pengukuran yang dibuat dari perspektif klien mungkin lebih lama oleh sebab latensi jaringan.  
**Entri contoh**  

```
70
```

**Waktu Perputaran**  
Jumlah milidetik yang dihabiskan Amazon S3 untuk memproses permintaan Anda. Nilai ini diukur sejak byte terakhir permintaan Anda diterima hingga byte pertama respons dikirim.  
**Entri contoh**  

```
10
```

**Referer**  
Nilai dari header HTTP `Referer`, jika ada. Agen pengguna HTTP (misalnya, browser) biasanya mengatur header ini ke URL dari halaman penautan atau penyematan saat membuat permintaan. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri contoh**  

```
"http://www.example.com/webservices"
```

**User-Agent**  
Nilai dari header HTTP `User-Agent`. Bidang ini mungkin menyertakan tanda kutip yang tidak terlolos dari input pengguna.  
**Entri contoh**  

```
"curl/7.15.1"
```

**ID Versi**  
ID versi objek yang disalin, atau `-` jika header `x-amz-copy-source` tidak menentukan parameter `versionId` sebagai bagian dari sumber salinan.  
**Entri Contoh**  

```
3HL4kqtJvjVBH40Nrjfkd
```

**Id Host**  
ID permintaan `x-amz-id-2` yang diperluas atau Amazon S3.  
**Entri contoh**  

```
s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=
```

**Versi Tanda Tangan**  
Versi tanda tangan, `SigV2` atau `SigV4`, yang digunakan untuk mengautentikasi permintaan atau `-` untuk permintaan tidak terautentikasi.  
**Entri contoh**  

```
SigV4
```

**Rangkaian Penyandian**  
Cipher Transport Layer Security (TLS) yang dinegosiasikan untuk permintaan HTTPS, atau untuk HTTP. `-`  
**Entri contoh**  

```
ECDHE-RSA-AES128-GCM-SHA256
```

**Jenis Autentikasi**  
Jenis otentikasi permintaan yang digunakan: `AuthHeader` untuk header otentikasi, untuk string kueri (presigned URLs), atau `QueryString` untuk permintaan yang tidak diautentikasi. `-`  
**Entri contoh**  

```
AuthHeader
```

**Header Host**  
Titik akhir yang digunakan untuk terhubung ke Amazon S3.  
**Entri contoh**  

```
s3.us-west-2.amazonaws.com
```
Beberapa Wilayah sebelumnya mendukung titik akhir lama. Anda mungkin melihat titik akhir ini di log atau AWS CloudTrail log akses server Anda. Untuk informasi selengkapnya, lihat [Titik akhir legasi](VirtualHosting.md#s3-legacy-endpoints). Untuk daftar lengkap titik akhir dan Wilayah Amazon S3, lihat [Titik akhir dan kuota Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html) di *Referensi Umum Amazon Web Services*.

**Versi TLS**  
Versi Keamanan Lapisan Pengangkutan (TLS) yang dinegosiasikan oleh klien. Nilai tersebut adalah salah satu dari berikut ini:`TLSv1.1`, `TLSv1.2`, `TLSv1.3`; atau `-` jika TLS tidak digunakan.  
**Entri contoh**  

```
TLSv1.2
```

**Titik Akses ARN**  
Amazon Resource Name (ARN) dari titik akses permintaan. Jika titik akses ARN mengalami kecacatan atau tidak digunakan, bidang akan berisi `-`. Untuk informasi lebih lanjut tentang titik akses, lihat [Menggunakan jalur akses Amazon S3 untuk bucket tujuan umum](using-access-points.md). Untuk informasi selengkapnya ARNs, lihat [Nama Sumber Daya Amazon (ARN) di Panduan AWS](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) *Referensi*.  
**Entri contoh**  

```
arn:aws:s3:us-east-1:123456789012:accesspoint/example-AP
```

**aclRequired**  
String yang menunjukkan apakah permintaan memerlukan daftar kontrol akses (ACL) untuk otorisasi. Jika permintaan memerlukan ACL untuk otorisasi, stringnya adalah `Yes`. Jika ACLs tidak diperlukan, string adalah`-`. Untuk informasi lebih lanjut tentang ACLs, lihat[Gambaran umum daftar kontrol akses (ACL)](acl-overview.md). Untuk informasi selengkapnya tentang menggunakan `aclRequired` bidang untuk menonaktifkan ACLs, lihat[Mengontrol kepemilikan objek dan menonaktifkan bucket ACLs Anda](about-object-ownership.md).   
**Entri contoh**  

```
Yes
```

**Wilayah sumber**  
 AWS Wilayah dari mana permintaan itu berasal. Bidang ini menunjukkan tanda hubung (`-`) ketika wilayah asal tidak dapat ditentukan (seperti PrivateLink koneksi, koneksi Direct Connect, Bring your own IP address (BYOIP), atau AWS non-IP address) atau ketika log dihasilkan oleh operasi yang dipicu berdasarkan kebijakan atau tindakan yang ditetapkan pelanggan, seperti siklus hidup dan checksum.  
**Entri contoh**  

```
us-east-1
```

## Informasi log akses kustom
<a name="LogFormatCustom"></a>

Anda dapat menyertakan informasi kustom untuk disimpan dalam catatan log akses untuk permintaan. Untuk melakukannya, menambahkan parameter string kueri kustom ke URL untuk permintaan tersebut. Amazon S3 mengabaikan parameter query-string yang dimulai dengan`x-`, tetapi mencakup parameter tersebut dalam catatan akses untuk permintaan, sebagai bagian dari `Request-URI` bidang catatan log. 

Contohnya, permintaan `GET` untuk `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg?x-user=johndoe"` bekerja dengan cara yang sama seperti permintaan untuk `"s3.amazonaws.com/amzn-s3-demo-bucket1/photos/2019/08/puppy.jpg"`, kecuali bahwa string `"x-user=johndoe"` termasuk dalam bidang `Request-URI` untuk catatan log terkait. Fungsi ini tersedia di antarmuka REST saja.

## Pertimbangan pemrograman untuk format log akses server yang dapat diperluas
<a name="LogFormatExtensible"></a>

Dari waktu ke waktu, kami dapat memperluas format catatan log akses dengan menambahkan bidang baru pada akhir setiap baris. Oleh karena itu, pastikan kode apa pun yang menguraikan pencatatan akses server dapat menangani bidang jejak yang mungkin tidak dipahaminya. 

# Menghapus file log Amazon S3
<a name="deleting-log-files-lifecycle"></a>

Bucket Amazon S3 dengan pencatatan akses server diaktifkan dapat mengakumulasi banyak objek log server dari waktu ke waktu. Aplikasi Anda mungkin memerlukan log akses ini untuk periode tertentu setelah pembuatan, dan setelah itu, Anda mungkin ingin menghapusnya. Anda dapat menggunakan konfigurasi siklus aktif Amazon S3 untuk menetapkan aturan sehingga Amazon S3 secara otomatis membuat antrean objek ini untuk dihapus di akhir masa aktifnya. 

Anda dapat menentukan konfigurasi siklus aktif untuk bagian objek dalam bucket S3 Anda dengan menggunakan prefiks bersama. Jika Anda menentukan prefiks di konfigurasi pencatatan log akses server Anda, Anda dapat mengatur aturan konfigurasi siklus aktif untuk menghapus objek log yang memiliki prefiks tersebut. 

Misalnya, anggaplah objek log Anda memiliki prefiks `logs/`. Anda dapat mengatur aturan konfigurasi siklus aktif untuk menghapus semua objek dalam bucket yang memiliki prefiks `logs/` setelah periode waktu tertentu. 

Untuk informasi lebih lanjut tentang konfigurasi siklus aktif, lihat [Mengelola siklus hidup objek](object-lifecycle-mgmt.md).

Untuk informasi selengkapnya tentang pencatatan akses server, lihat [Pencatatan permintaan dengan pencatatan akses server](ServerLogs.md).

# Menggunakan log akses server Amazon S3 untuk mengidentifikasi permintaan
<a name="using-s3-access-logs-to-identify-requests"></a>

Anda dapat mengidentifikasi permintaan Amazon S3 dengan pencatatan akses server Amazon S3. 

**catatan**  
Untuk mengidentifikasi permintaan Amazon S3, sebaiknya gunakan peristiwa AWS CloudTrail data alih-alih log akses server Amazon S3. CloudTrail peristiwa data lebih mudah diatur dan berisi lebih banyak informasi. Untuk informasi selengkapnya, lihat [Mengidentifikasi permintaan Amazon S3 menggunakan CloudTrail](cloudtrail-request-identification.md).
Bergantung pada berapa banyak permintaan akses yang Anda dapatkan, menganalisis log Anda mungkin memerlukan lebih banyak sumber daya atau waktu daripada menggunakan peristiwa CloudTrail data.

**Topics**
+ [

## Melakukan kueri pencatatan akses untuk permintaan dengan menggunakan Amazon Athena
](#querying-s3-access-logs-for-requests)
+ [

## Mengidentifikasi permintaan Signature Version 2 menggunakan pencatatan akses Amazon S3
](#using-s3-access-logs-to-identify-sigv2-requests)
+ [

## Mengidentifikasi permintaan akses objek dengan menggunakan pencatatan akses Amazon S3
](#using-s3-access-logs-to-identify-objects-access)

## Melakukan kueri pencatatan akses untuk permintaan dengan menggunakan Amazon Athena
<a name="querying-s3-access-logs-for-requests"></a>

Anda dapat mengidentifikasi permintaan Amazon S3 dengan log akses Amazon S3 menggunakan Amazon Athena. 

Amazon S3 menyimpan log akses server sebagai objek dalam bucket S3. Sering kali lebih mudah menggunakan alat yang dapat menganalisis log di Amazon S3. Athena mendukung analisis S3 Object dan dapat digunakan untuk mencari log akses Amazon S3.

**Example**  
Contoh berikut menunjukkan bagaimana Anda dapat melakukan kueri log akses server Amazon S3 di Amazon Athena. Ganti yang `user input placeholders` digunakan dalam contoh berikut dengan informasi Anda sendiri.  
Untuk menentukan lokasi Amazon S3 dalam kueri Athena, Anda harus memberikan URI S3 untuk bucket tempat log Anda dikirimkan. URI ini harus menyertakan nama bucket dan prefiks dalam format berikut: `s3://amzn-s3-demo-bucket1-logs/prefix/` 

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Dalam Editor Kueri, jalankan perintah yang mirip dengan berikut ini. Ganti `s3_access_logs_db` dengan nama yang ingin Anda berikan ke basis data Anda. 

   ```
   CREATE DATABASE s3_access_logs_db
   ```
**catatan**  
Ini adalah praktik terbaik untuk membuat database yang Wilayah AWS sama dengan bucket S3 Anda. 

1. Dalam Query Editor, jalankan perintah yang mirip dengan perintah berikut untuk membuat skema tabel di basis data yang Anda buat di langkah 2. Ganti `s3_access_logs_db.mybucket_logs` dengan nama yang ingin Anda berikan ke meja Anda. Nilai jenis data `STRING` dan `BIGINT` adalah properti log akses. Anda dapat mencari properti ini di Athena. Untuk `LOCATION`, masukkan bucket S3 dan jalur prefiks seperti yang disebutkan sebelumnya.

------
#### [ Date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE s3_access_logs_db.mybucket_logs( 
    `bucketowner` STRING, 
    `bucket_name` STRING, 
    `requestdatetime` STRING, 
    `remoteip` STRING, 
    `requester` STRING, 
    `requestid` STRING, 
    `operation` STRING, 
    `key` STRING, 
    `request_uri` STRING, 
    `httpstatus` STRING, 
    `errorcode` STRING, 
    `bytessent` BIGINT, 
    `objectsize` BIGINT, 
    `totaltime` STRING, 
    `turnaroundtime` STRING, 
    `referrer` STRING, 
    `useragent` STRING, 
    `versionid` STRING, 
    `hostid` STRING, 
    `sigv` STRING, 
    `ciphersuite` STRING, 
    `authtype` STRING, 
    `endpoint` STRING, 
    `tlsversion` STRING,
    `accesspointarn` STRING,
    `aclrequired` STRING,
    `sourceregion` STRING)
    PARTITIONED BY (
      `timestamp` string)
   ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
    'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
    's3://bucket-name/prefix-name/account-id/region/source-bucket-name/'
    TBLPROPERTIES (
     'projection.enabled'='true', 
     'projection.timestamp.format'='yyyy/MM/dd', 
     'projection.timestamp.interval'='1', 
     'projection.timestamp.interval.unit'='DAYS', 
     'projection.timestamp.range'='2024/01/01,NOW', 
     'projection.timestamp.type'='date', 
     'storage.location.template'='s3://bucket-name/prefix-name/account-id/region/source-bucket-name/${timestamp}')
   ```

------
#### [ Non-date-based partitioning ]

   ```
   CREATE EXTERNAL TABLE `s3_access_logs_db.mybucket_logs`(
     `bucketowner` STRING, 
     `bucket_name` STRING, 
     `requestdatetime` STRING, 
     `remoteip` STRING, 
     `requester` STRING, 
     `requestid` STRING, 
     `operation` STRING, 
     `key` STRING, 
     `request_uri` STRING, 
     `httpstatus` STRING, 
     `errorcode` STRING, 
     `bytessent` BIGINT, 
     `objectsize` BIGINT, 
     `totaltime` STRING, 
     `turnaroundtime` STRING, 
     `referrer` STRING, 
     `useragent` STRING, 
     `versionid` STRING, 
     `hostid` STRING, 
     `sigv` STRING, 
     `ciphersuite` STRING, 
     `authtype` STRING, 
     `endpoint` STRING, 
     `tlsversion` STRING,
     `accesspointarn` STRING,
     `aclrequired` STRING,
     `sourceregion` STRING)
   ROW FORMAT SERDE 
     'org.apache.hadoop.hive.serde2.RegexSerDe' 
   WITH SERDEPROPERTIES ( 
     'input.regex'='([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\"|-) ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$') 
   STORED AS INPUTFORMAT 
     'org.apache.hadoop.mapred.TextInputFormat' 
   OUTPUTFORMAT 
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket1-logs/prefix/'
   ```

------

1. Dalam panel navigasi, pada **Basis Data**, pilih basis data Anda.

1. Pada **Tabel**, pilih **Tabel pratinjau** di sebelah nama tabel Anda.

   Di panel **Hasil**, Anda akan melihat data dari log akses server, seperti `bucketowner`, `bucket`, `requestdatetime`, dan sebagainya. Ini berarti Anda berhasil membuat tabel Athena. Sekarang Anda dapat mengkueri log akses server Amazon S3.

**Example — Menunjukkan siapa yang menghapus objek dan kapan (tanda waktu, alamat IP, dan pengguna IAM)**  

```
SELECT requestdatetime, remoteip, requester, key 
FROM s3_access_logs_db.mybucket_logs 
WHERE key = 'images/picture.jpg' AND operation like '%DELETE%';
```

**Example — Menunjukkan semua operasi yang dilakukan oleh pengguna IAM**  

```
SELECT * 
FROM s3_access_logs_db.mybucket_logs 
WHERE requester='arn:aws:iam::123456789123:user/user_name';
```

**Example — Menunjukkan semua operasi yang dilakukan pada objek dalam periode waktu tertentu**  

```
SELECT *
FROM s3_access_logs_db.mybucket_logs
WHERE Key='prefix/images/picture.jpg' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2017-02-18:07:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2017-02-18:08:00:00','yyyy-MM-dd:HH:mm:ss');
```

**Example — Menunjukkan berapa banyak data yang dipindahkan ke alamat IP tertentu dalam periode waktu tertentu**  

```
SELECT coalesce(SUM(bytessent), 0) AS bytessenttotal
FROM s3_access_logs_db.mybucket_logs
WHERE remoteip='192.0.2.1'
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-06-01','yyyy-MM-dd')
AND parse_datetime('2022-07-01','yyyy-MM-dd');
```

**Example — Temukan permintaan IDs untuk kesalahan HTTP 5xx dalam periode waktu tertentu**  

```
SELECT requestdatetime, key, httpstatus, errorcode, requestid, hostid 
FROM s3_access_logs_db.mybucket_logs
WHERE httpstatus like '5%' AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
```

**catatan**  
Untuk mengurangi waktu dalam mempertahankan pencatatan, Anda dapat membuat konfigurasi Siklus Hidup S3 untuk bucket pencatatan akses server Anda. Buat aturan konfigurasi siklus aktif untuk menghapus file log secara berkala. Hal ini mengurangi jumlah data yang dianalisis oleh Athena untuk setiap kueri. Untuk informasi selengkapnya, lihat [Menyetel konfigurasi Siklus Hidup S3 pada bucket](how-to-set-lifecycle-configuration-intro.md).

## Mengidentifikasi permintaan Signature Version 2 menggunakan pencatatan akses Amazon S3
<a name="using-s3-access-logs-to-identify-sigv2-requests"></a>

Dukungan Amazon S3 untuk Signature Version 2 akan dinonaktifkan (dihentikan). Setelah itu, Amazon S3 tidak akan menerima lagi permintaan yang menggunakan Signature Version 2, dan semua permintaan harus menggunakan penandatanganan Signature Version 4. Anda dapat mengidentifikasi permintaan akses Signature Version 2 menggunakan log akses Amazon S3. 

**catatan**  
Untuk mengidentifikasi permintaan Signature Version 2, sebaiknya gunakan peristiwa AWS CloudTrail data, bukan log akses server Amazon S3. CloudTrail peristiwa data lebih mudah diatur dan berisi lebih banyak informasi daripada log akses server. Untuk informasi selengkapnya, lihat [Mengidentifikasi permintaan Amazon S3 Signature Version 2 dengan menggunakan CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-sigv2-requests).

**Example — Menunjukkan semua peminta yang mengirimkan lalu lintas Signature Version 2**  

```
SELECT requester, sigv, Count(sigv) as sigcount 
FROM s3_access_logs_db.mybucket_logs
GROUP BY requester, sigv;
```

## Mengidentifikasi permintaan akses objek dengan menggunakan pencatatan akses Amazon S3
<a name="using-s3-access-logs-to-identify-objects-access"></a>

Anda dapat menggunakan kueri di log akses server Amazon S3 untuk mengidentifikasi permintaan akses objek Amazon S3, untuk operasi seperti `GET`, `PUT`, dan `DELETE`, lalu menemukan informasi lebih lanjut tentang permintaan tersebut.

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan objek `PUT` untuk Amazon S3 dari log akses server. 

**Example — Menunjukkan semua peminta yang mengirimkan permintaan objek `PUT` dalam periode tertentu**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.PUT.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42',yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan objek `GET` untuk Amazon S3 dari log akses server. 

**Example — Menunjukkan semua peminta yang mengirimkan permintaan objek `GET` dalam periode tertentu**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.GET.OBJECT' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Contoh kueri Amazon Athena berikut menunjukkan cara mendapatkan semua permintaan anonim ke bucket S3 Anda dari log akses server. 

**Example — Menunjukkan semua pemohon anonim yang membuat permintaan ke bucket selama periode tertentu**  

```
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE requester IS NULL 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z') 
BETWEEN parse_datetime('2019-07-01:00:42:42','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2019-07-02:00:42:42','yyyy-MM-dd:HH:mm:ss')
```

Kueri Amazon Athena berikut menunjukkan cara mengidentifikasi semua permintaan ke bucket S3 Anda yang memerlukan daftar kontrol akses (ACL) untuk otorisasi. Anda dapat menggunakan informasi ini untuk memigrasikan izin ACL tersebut ke kebijakan bucket yang sesuai dan menonaktifkannya. ACLs Setelah membuat kebijakan bucket ini, Anda dapat ACLs menonaktifkan bucket ini. Untuk informasi selengkapnya tentang menonaktifkan ACLs, lihat. [Prasyarat untuk menonaktifkan ACLs](object-ownership-migrating-acls-prerequisites.md) 

**Example — Identifikasi semua permintaan yang memerlukan ACL untuk otorisasi**  

```
SELECT bucket_name, requester, key, operation, aclrequired, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE aclrequired = 'Yes' 
AND parse_datetime(requestdatetime,'dd/MMM/yyyy:HH:mm:ss Z')
BETWEEN parse_datetime('2022-05-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
AND parse_datetime('2022-08-10:00:00:00','yyyy-MM-dd:HH:mm:ss')
```

**catatan**  
Anda dapat mengubah rentang tanggal sesuai kebutuhan.
Contoh kueri ini juga dapat berguna untuk pemantauan keamanan. Anda dapat meninjau hasil untuk panggilan `PutObject` atau `GetObject` dari alamat IP yang tidak terduga atau tidak sah atau pemohon, dan untuk mengidentifikasi permintaan anonim ke bucket Anda.
Kueri ini hanya mengambil informasi dari waktu saat pencatatan log diaktifkan. 
Jika Anda menggunakan AWS CloudTrail log, lihat[Mengidentifikasi akses ke objek S3 dengan menggunakan CloudTrail](cloudtrail-request-identification.md#cloudtrail-identification-object-access). 

# Memecahkan masalah pencatatan akses server
<a name="troubleshooting-server-access-logging"></a>

Topik berikut dapat membantu Anda memecahkan masalah yang mungkin Anda alami saat menyiapkan pencatatan dengan Amazon S3.

**Topics**
+ [

## Pesan kesalahan umum saat mengatur pencatatan
](#common-errors)
+ [

## Memecahkan masalah kegagalan pengiriman
](#delivery-failures)

## Pesan kesalahan umum saat mengatur pencatatan
<a name="common-errors"></a>

Pesan galat umum berikut dapat muncul saat Anda mengaktifkan logging melalui AWS Command Line Interface (AWS CLI) dan AWS SDKs: 

Kesalahan: Pencatatan lokasi Cross S3 tidak diizinkan

Jika bucket tujuan (juga dikenal sebagai *bucket target*) berada di Region yang berbeda dari bucket sumber, kesalahan Pencatatan lokasi Cross S3 tidak diizinkan akan terjadi. Untuk mengatasi kesalahan ini, pastikan bucket tujuan yang dikonfigurasi untuk menerima log akses sama Wilayah AWS dan Akun AWS sebagai bucket sumber.

Kesalahan: Pemilik bucket yang akan dicatat dan bucket target harus sama

Saat Anda mengaktifkan pencatatan akses server, kesalahan ini terjadi jika bucket tujuan yang ditentukan dimiliki akun lain. Untuk mengatasi kesalahan ini, pastikan bucket tujuan Akun AWS sama dengan bucket sumber.

**catatan**  
Kami menyarankan Anda memilih bucket tujuan yang berbeda dari bucket sumber. Ketika bucket sumber dan bucket tujuan sama, log tambahan dibuat untuk log yang ditulis ke bucket, yang dapat menambah tagihan penyimpanan Anda. Log tambahan tentang log ini juga dapat menyulitkan untuk menemukan log tertentu yang Anda cari. Untuk manajemen pencatatan yang lebih sederhana, kami sarankan untuk menyimpan log akses dalam bucket yang berbeda. Untuk informasi selengkapnya, lihat [Bagaimana cara mengaktifkan log pengiriman?](ServerLogs.md#server-access-logging-overview).

Kesalahan: Bucket target untuk pencatatan tidak ada

Bucket tujuan harus ada sebelum menyetel konfigurasi. Kesalahan ini menunjukkan bahwa bucket tujuan tidak ada atau tidak dapat ditemukan. Pastikan bahwa nama bucket dieja dengan benar, lalu coba lagi.

Kesalahan: Pemberian target tidak diizinkan untuk bucket yang diberlakukan pemilik bucket

Kesalahan ini menunjukkan bahwa bucket tujuan menggunakan pengaturan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek S3. Pengaturan yang diberlakukan pemilik Bucket tidak mendukung pemberian tujuan (target). Untuk informasi selengkapnya, lihat [Izin untuk pengiriman log](enable-server-access-logging.md#grant-log-delivery-permissions-general).

## Memecahkan masalah kegagalan pengiriman
<a name="delivery-failures"></a>

Untuk menghindari masalah pencatatan akses server, pastikan Anda mengikuti praktik terbaik berikut ini:
+ **Grup pengiriman log S3 memiliki akses tulis ke bucket tujuan**–Grup pengiriman log S3 mengirimkan log akses server ke bucket tujuan. Kebijakan bucket atau bucket daftar kontrol akses (ACL) dapat digunakan untuk memberikan akses tulis ke bucket tujuan. Namun, kami menyarankan Anda menggunakan kebijakan bucket, bukan ACL. Untuk informasi selengkapnya tentang cara memberikan akses tulis ke bucket tujuan, lihat [Izin untuk pengiriman log](enable-server-access-logging.md#grant-log-delivery-permissions-general).
**catatan**  
Jika bucket tujuan menggunakan setelan yang diberlakukan pemilik Bucket untuk Kepemilikan Objek, perhatikan hal-hal berikut:   
ACLs dinonaktifkan dan tidak lagi memengaruhi izin. Ini berarti Anda tidak dapat memperbarui ACL bucket untuk memberikan akses ke grup pengiriman log S3. Sebagai gantinya, untuk memberikan akses ke pengguna utama layanan pencatatan, Anda harus memperbarui kebijakan bucket untuk bucket tujuan. 
Anda tidak dapat menyertakan pemberian tujuan dalam konfigurasi `PutBucketLogging` Anda. 
+ **Kebijakan bucket untuk bucket tujuan memungkinkan akses ke log**–Periksa kebijakan bucket dari bucket tujuan. Cari kebijakan bucket untuk setiap pernyataan yang berisi `"Effect": "Deny"`. Kemudian, verifikasi bahwa pernyataan `Deny` tersebut tidak mencegah log akses ditulis ke bucket.
+ **Kunci Objek S3 tidak diaktifkan di bucket tujuan**–Periksa apakah bucket tujuan mengaktifkan Kunci Objek. Kunci Objek memblokir pengiriman log akses server. Anda harus memilih bucket tujuan yang tidak mengaktifkan Kunci Objek.
+ **Kunci terkelola Amazon S3 (SSE-S3) dipilih jika enkripsi default diaktifkan pada bucket tujuan**–Anda dapat menggunakan enkripsi bucket default pada bucket tujuan hanya jika Anda menggunakan enkripsi di sisi server dengan kunci terkelola Amazon S3 (SSE-S3). Enkripsi sisi server default dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS) tidak didukung untuk bucket tujuan pencatatan akses server. Untuk informasi selengkapnya tentang cara mengaktifkan enkripsi default, lihat[Mengonfigurasi enkripsi default](default-bucket-encryption.md).
+ **Bucket tujuan tidak mengaktifkan Pembayaran Pemohon**–Menggunakan bucket Pembayaran Pemohon sebagai bucket tujuan untuk pencatatan akses server tidak didukung. Untuk mengizinkan pengiriman log akses server, nonaktifkan opsi Pembayaran Pemohon di bucket tujuan.
+ **Tinjau kebijakan kontrol AWS Organizations layanan (SCPs) dan kebijakan kontrol sumber daya (RCPs)** — Saat Anda menggunakan AWS Organizations, periksa kebijakan kontrol layanan dan kebijakan kontrol sumber daya untuk memastikan akses Amazon S3 diizinkan. Kebijakan ini menetapkan izin maksimum untuk prinsipal dan sumber daya di akun yang terpengaruh. Cari kebijakan untuk setiap pernyataan yang berisi `"Effect": "Deny"` dan verifikasi bahwa `Deny` pernyataan tidak mencegah log akses apa pun ditulis ke bucket. Untuk informasi selengkapnya, lihat [Kebijakan otorisasi AWS Organizations di](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html) *Panduan AWS Organizations Pengguna*.
+ **Berikan beberapa waktu agar perubahan konfigurasi pencatatan terbaru diterapkan**–Mengaktifkan pencatatan akses server untuk pertama kalinya, atau mengubah bucket tujuan untuk log, memerlukan waktu untuk sepenuhnya diterapkan. Mungkin diperlukan waktu lebih dari satu jam agar semua permintaan dicatat dan dikirim dengan benar. 

  Untuk memeriksa kegagalan pengiriman log, aktifkan metrik permintaan di Amazon CloudWatch. Jika log tidak dikirim dalam beberapa jam, cari metrik `4xxErrors`, yang dapat menunjukkan kegagalan pengiriman log. Untuk informasi lebih lanjut tentang mengaktifkan metrik permintaan, lihat [Membuat konfigurasi CloudWatch metrik untuk semua objek di bucket Anda](configure-request-metrics-bucket.md).