

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

# Menggunakan Amazon SQS, Amazon SNS, dan Lambda
<a name="how-to-enable-disable-notification-intro"></a>

Mengaktifkan notifikasi adalah operasi tingkat bucket. Anda menyimpan konfigurasi notifikasi di sub-sumber daya *notifikasi* yang berasosiasi dengan bucket. Setelah Anda membuat atau mengubah konfigurasi notifikasi bucket, biasanya diperlukan waktu sekitar lima menit sampai perubahan diterapkan. `s3:TestEvent` terjadi ketika notifikasi pertama kali diaktifkan. Anda dapat menggunakan salah satu metode berikut untuk mengelola konfigurasi pemberitahuan:
+ **Menggunakan konsol Amazon S3**—Anda dapat menggunakan UI konsol untuk mengatur konfigurasi notifikasi pada bucket tanpa harus tulis kode apa pun. Untuk informasi selengkapnya, lihat [Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3](enable-event-notifications.md).
+ **Secara terprogram menggunakan AWS SDKs** — Secara internal, baik konsol maupun SDKs panggilan Amazon S3 REST API untuk mengelola subresource *notifikasi* yang terkait dengan bucket. Untuk contoh konfigurasi notifikasi yang menggunakan SDK AWS , lihat [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md).
**catatan**  
Anda juga dapat melakukan panggilan API REST Amazon S3 secara langsung dari kode Anda. Namun, ini dapat merepotkan karena untuk melakukannya Anda harus menulis kode untuk mengautentikasi permintaan Anda. 

Terlepas dari metode yang Anda gunakan, Amazon S3 menyimpan konfigurasi notifikasi sebagai XL di sub-sumber daya *notifikasi* yang terkait dengan bucket. Untuk informasi tentang sub-sumber daya bucket, lihat [Opsi konfigurasi bucket tujuan umum](UsingBucket.md#bucket-config-options-intro).

**catatan**  
Jika Anda memiliki beberapa pemberitahuan peristiwa gagal karena tujuan yang dihapus, Anda mungkin menerima **Tidak dapat memvalidasi konfigurasi tujuan berikut** saat mencoba menghapusnya. Anda dapat mengatasi ini di konsol S3 dengan menghapus semua notifikasi yang gagal secara bersamaan.

**Topics**
+ [memberikan izin untuk memublikasikan pesan pemberitahuan peristiwa ke tujuan](grant-destinations-permissions-to-s3.md)
+ [Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3](enable-event-notifications.md)
+ [Mengonfigurasi notifikasi peristiwa secara terprogram](#event-notification-configuration)
+ [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md)
+ [Mengonfigurasi notifikasi peristiwa dengan filter nama kunci objek](notification-how-to-filtering.md)
+ [Struktur pesan peristiwa](notification-content-structure.md)

# memberikan izin untuk memublikasikan pesan pemberitahuan peristiwa ke tujuan
<a name="grant-destinations-permissions-to-s3"></a>

Anda harus memberikan izin yang diperlukan kepada pengguna utama Amazon S3 untuk memanggil API terkait guna menerbitkan pesan ke topik SNS, antrean SQS, atau fungsi Lambda. Hal ini agar Amazon S3 dapat memublikasikan pesan pemberitahuan peristiwa ke tujuan.

Untuk memecahkan masalah memublikasikan pesan pemberitahuan peristiwa ke tujuan, lihat [ Memecahkan masalah untuk memublikasikan pemberitahuan peristiwa Amazon S3 ke topik Layanan Pemberitahuan Sederhana Amazon ](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications).

**Topics**
+ [Memberikan izin untuk menjalankan fungsi AWS Lambda](#grant-lambda-invoke-permission-to-s3)
+ [memberikan izin untuk memublikasikan pesan ke topik SNS atau antrean SQS](#grant-sns-sqs-permission-for-s3)

## Memberikan izin untuk menjalankan fungsi AWS Lambda
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 menerbitkan pesan peristiwa AWS Lambda dengan menjalankan fungsi Lambda dan menyediakan pesan acara sebagai argumen.

Saat Anda menggunakan konsol Amazon S3 untuk mengonfigurasi notifikasi peristiwa pada bucket Amazon S3 untuk fungsi Lambda, konsol menyiapkan izin yang diperlukan pada fungsi Lambda. Ini agar Amazon S3 memiliki izin untuk menginvokasi fungsi dari bucket. Untuk informasi selengkapnya, lihat [Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3](enable-event-notifications.md). 

Anda juga dapat memberikan izin Amazon S3 dari AWS Lambda untuk menjalankan fungsi Lambda Anda. Untuk informasi selengkapnya, lihat [Tutorial: Menggunakan AWS Lambda Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) di Panduan *AWS Lambda Pengembang*.

## memberikan izin untuk memublikasikan pesan ke topik SNS atau antrean SQS
<a name="grant-sns-sqs-permission-for-s3"></a>

Untuk memberikan izin Amazon S3 untuk memublikasikan pesan ke topik SNS atau antrean SQS, lampirkan kebijakan AWS Identity and Access Management (IAM) ke topik SNS tujuan atau antrean SQS. 

Sebagai contoh cara melampirkan kebijakan ke topik SNS atau antrean SQS, lihat [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md). Untuk informasi lebih lanjut tentang izin, lihat topik berikut:
+ [Contoh kasus untuk kendali akses Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html) dalam *Panduan Amazon Simple Notification Service*
+ [Manajemen Identitas dan Akses di Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) dalam *Panduan Pengembang Amazon Simple Queue Service*

### Kebijakan IAM untuk topik SNS tujuan
<a name="sns-topic-policy"></a>

Berikut ini adalah contoh kebijakan AWS Identity and Access Management (IAM) yang Anda lampirkan ke topik SNS tujuan. Untuk petunjuk tentang cara menggunakan kebijakan ini untuk menyiapkan topik Amazon SNS tujuan untuk pemberitahuan peristiwa, lihat [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### Kebijakan IAM untuk antrean SQS tujuan
<a name="sqs-queue-policy"></a>

Berikut ini adalah contoh kebijakan IAM yang Anda lampirkan ke antrean SQS tujuan. Untuk petunjuk tentang cara menggunakan kebijakan ini untuk menyiapkan antrean Amazon SQS tujuan untuk pemberitahuan peristiwa, lihat [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md).

Untuk menggunakan kebijakan ini, Anda harus memperbarui ARN antrian Amazon SQS, nama bucket, dan ID pemilik bucket. Akun AWS 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Untuk kebijakan Amazon SNS dan Amazon SQS IAM, Anda dapat menentukan `StringLike` kondisi dalam kebijakan, bukan kondisi `ArnLike`.

Bila `ArnLike` digunakan, partisi, layanan, ID akun, tipe sumber daya, dan sebagian ID sumber daya parsi dari ARN harus sama persis dengan ARN dalam konteks permintaan. Hanya wilayah dan jalur sumber daya yang memungkinkan pencocokan sebagian.

 Ketika `StringLike` digunakan sebagai gantinya`ArnLike`, pencocokan mengabaikan struktur ARN dan memungkinkan pencocokan paral, terlepas dari bagian yang digantikan oleh karakter wildcard. Untuk informasi selengkapnya, lihat [Elemen Kebijakan IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dalam *Panduan Pengguna IAM*.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS kebijakan kunci
<a name="key-policy-sns-sqs"></a>

Jika antrean SQS atau topik SNS dienkripsi dengan kunci yang dikelola pelanggan AWS Key Management Service (AWS KMS), Anda harus memberikan izin utama layanan Amazon S3 untuk bekerja dengan topik atau antrian terenkripsi. Untuk memberikan izin pengguna utama layanan Amazon S3, tambahkan pernyataan berikut ke kebijakan kunci untuk CMK.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Untuk informasi selengkapnya tentang kebijakan AWS KMS utama, lihat [Menggunakan kebijakan utama AWS KMS di](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) *Panduan AWS Key Management Service Pengembang*. 

Untuk informasi selengkapnya tentang penggunaan enkripsi sisi server dengan Amazon AWS KMS SQS dan Amazon SNS, lihat berikut ini:
+ [Pengelolaan kunci](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) di *Panduan Pengembang Layanan Notifikasi Sederhana Amazon*.
+ [Pengelolaan kunci](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) di *Panduan Pengembang Layanan Antrean Sederhana Amazon*.
+ [Mengenkripsi pesan yang diterbitkan untuk Amazon SNS dengan AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) dalam *Blog Komputasi AWS *.

# Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3
<a name="enable-event-notifications"></a>

Anda dapat mengaktifkan peristiwa bucket tujuan umum Amazon S3 tertentu untuk mengirim pesan notifikasi ke tujuan kapan pun peristiwa tersebut terjadi. Bagian ini menjelaskan cara menggunakan konsol Amazon S3 untuk mengaktifkan pemberitahuan peristiwa. Untuk informasi tentang cara menggunakan notifikasi acara dengan AWS SDKs dan Amazon S3 REST APIs, lihat. [Mengonfigurasi notifikasi peristiwa secara terprogram](how-to-enable-disable-notification-intro.md#event-notification-configuration) 

**Prasyarat**: Sebelum dapat mengaktifkan notifikasi peristiwa untuk bucket Anda, Anda harus menyiapkan salah satu jenis tujuan dan kemudian mengonfigurasi izin. Untuk informasi selengkapnya, lihat [Tujuan peristiwa yang didukung](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) dan [memberikan izin untuk memublikasikan pesan pemberitahuan peristiwa ke tujuan](grant-destinations-permissions-to-s3.md).

**catatan**  
Antrean Amazon Simple Queue Service FIFO (First-In-First-Out) tidak didukung sebagai tujuan pemberitahuan peristiwa Amazon S3. Untuk mengirim pemberitahuan untuk acara Amazon S3 ke antrian FIFO Amazon SQS, Anda dapat menggunakan Amazon. EventBridge Untuk informasi selengkapnya, lihat [Mengaktifkan Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Mengaktifkan notifikasi Amazon SNS, Amazon SQS, atau Lambda menggunakan konsol Amazon S3](#enable-event-notifications-sns-sqs-lam)

## Mengaktifkan notifikasi Amazon SNS, Amazon SQS, atau Lambda menggunakan konsol Amazon S3
<a name="enable-event-notifications-sns-sqs-lam"></a>

**Untuk mengaktifkan dan mengonfigurasi pemberitahuan peristiwa untuk bucket S3**

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 tempat Anda ingin mengaktifkan event.

1. Pilih **Properti**.

1. Navigasikan ke **Pemberitahuan Acara** dan pilih **Buat pemberitahuan peristiwa**.

1. Di bagian **Konfigurasi umum**, sebutkan nama peristiwa deskriptif untuk pemberitahuan peristiwa Anda. Atau, Anda juga dapat menentukan prefiks dan sufiks untuk membatasi pemberitahuan ke objek dengan kunci yang berakhir dalam karakter yang ditentukan.

   1. Masukkan deskripsi untuk **Nama peristiwa**.

      Jika Anda tidak memasukkan nama, pengidentifikasi unik global (GUID) akan dibuat dan digunakan untuk nama. 

   1. (Opsional) Untuk memfilter pemberitahuan peristiwa dengan prefiks, masukkan **Prefiks**. 

      Misalnya, Anda dapat menyiapkan filter prefiks sehingga Anda menerima pemberitahuan hanya ketika file ditambahkan ke folder tertentu (misalnya, `images/`). 

   1. (Opsional) Untuk memfilter pemberitahuan peristiwa dengan sufiks, masukkan **Sufiks**. 

      Untuk informasi selengkapnya, lihat [Mengonfigurasi notifikasi peristiwa dengan filter nama kunci objek](notification-how-to-filtering.md). 

1. Di bagian **Jenis peristiwa**, pilih satu atau beberapa jenis peristiwa yang ingin Anda terima pemberitahuannya. 

   Untuk daftar jenis peristiwa berbeda, lihat [Jenis event yang didukung untuk SQS, SNS, dan Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types).

1. Di bagian **Tujuan**, pilih tujuan pemberitahuan peristiwa. 
**catatan**  
Sebelum Anda dapat menerbitkan pemberitahuan peristiwa, Anda harus memberikan izin yang diperlukan kepada pengguna utama Amazon S3 untuk memanggil API terkait. Ini agar dapat menerbitkan pemberitahuan ke fungsi Lambda, topik SNS, atau antrean SQS.

   1. Pilih jenis tujuan: **Fungsi Lambda**, **Topik SNS**, atau **Antrean SQS**.

   1. Setelah memilih jenis tujuan Anda, pilih fungsi, topik, atau antrean dari daftar.

   1. Atau, jika Anda ingin menentukan Amazon Resource Name (ARN), pilih **Maemasukkan ARN** dan memasukkan ARN.

   Untuk informasi selengkapnya, lihat [Tujuan peristiwa yang didukung](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

1. Memilih **Simpan perubahan**, dan Amazon S3 mengirimkan pesan pengujian ke destinasi notifikasi peristiwa.

## Mengonfigurasi notifikasi peristiwa secara terprogram
<a name="event-notification-configuration"></a>

Secara default, notifikasi tidak diaktifkan untuk jenis peristiwa apa pun. Oleh karena itu, awalnya sub-sumber daya *notifikasi* menyimpan konfigurasi kosong.

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

Untuk mengaktifkan pemberitahuan tentang peristiwa jenis tertentu, Anda mengganti XML dengan konfigurasi yang sesuai yang mengidentifikasi jenis peristiwa yang Anda ingin Amazon S3 untuk terbitkan dan tujuan di mana Anda ingin peristiwa tersebut diterbitkan. Untuk setiap tujuan, Anda menambahkan konfigurasi XML terkait. 

**Untuk mempublikasikan pesan peristiwa ke antrean SQS**  
Untuk mengatur antrean SQS sebagai tujuan notifikasi untuk satu atau beberapa jenis peristiwa, Anda menambahkan `QueueConfiguration`.

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>optional-id-string</Id>
    <Queue>sqs-queue-arn</Queue>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**Untuk memublikasikan pesan uji ke topik SNS**  
Untuk menetapkan topik SNS sebagai tujuan notifikasi untuk jenis peristiwa tertentu, Anda menambahkan `TopicConfiguration`.

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>optional-id-string</Id>
     <Topic>sns-topic-arn</Topic>
     <Event>event-type</Event>
     <Event>event-type</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**Untuk memanggil AWS Lambda fungsi dan memberikan pesan acara sebagai argumen**  
Untuk mengatur fungsi Lambda sebagai tujuan notifikasi untuk jenis peristiwa tertentu, Anda menambahkan `CloudFunctionConfiguration`.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>optional-id-string</Id>   
     <CloudFunction>cloud-function-arn</CloudFunction>        
     <Event>event-type</Event>      
     <Event>event-type</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**Untuk menghapus semua notifikasi yang dikonfigurasi pada bucket**  
Untuk menghapus semua notifikasi yang dikonfigurasi di bucket, simpan elemen `<NotificationConfiguration/>` kosong dalam sub-sumber daya *notifikasi*. 

Saat Amazon S3 mendeteksi peristiwa dengan jenis tertentu, itu menerbitkan pesan dengan informasi peristiwa. Untuk informasi selengkapnya, lihat [Struktur pesan peristiwa](notification-content-structure.md). 

Untuk informasi lebih lanjut tentang mengonfigurasi notifikasi Peristiwa, lihat topik berikut: 
+ [Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)](ways-to-add-notification-config-to-bucket.md).
+ [Mengonfigurasi notifikasi peristiwa dengan filter nama kunci objek](notification-how-to-filtering.md)

# Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS)
<a name="ways-to-add-notification-config-to-bucket"></a>

Anda dapat menerima notifikasi Amazon S3 menggunakan Amazon Simple Notiﬁcation Service (Amazon SNS); atau Amazon Simple Queue Service (Amazon SQS). Dalam panduan selanjutnya, Anda akan menambahkan konfigurasi notifikasi ke bucket Anda menggunakan topik Amazon SNS dan antrean Amazon SQS.

**catatan**  
Antrean Amazon Simple Queue Service FIFO (First-In-First-Out) tidak didukung sebagai tujuan pemberitahuan peristiwa Amazon S3. Untuk mengirim pemberitahuan untuk acara Amazon S3 ke antrian FIFO Amazon SQS, Anda dapat menggunakan Amazon. EventBridge Untuk informasi selengkapnya, lihat [Mengaktifkan Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Ringkasan panduan](#notification-walkthrough-summary)
+ [Langkah 1: Buat antrean Amazon SQS](#step1-create-sqs-queue-for-notification)
+ [Langkah 2: Buat Topik Amazon SNS](#step1-create-sns-topic-for-notification)
+ [Langkah 3: Menambahkan konfigurasi notifikasi ke bucket Anda](#step2-enable-notification)
+ [Langkah 4: Menguji pengaturan](#notification-walkthrough-1-test)

## Ringkasan panduan
<a name="notification-walkthrough-summary"></a>

Panduan ini membantu Anda melakukan hal berikut ini:
+ Terbitkan peristiwa dari jenis `s3:ObjectCreated:*` ke antrean Amazon SQS.
+ Terbitkan peristiwa dari jenis `s3:ReducedRedundancyLostObject` ke topik Amazon SNS.

Untuk informasi tentang konfigurasi pemberitahuan, lihat [Menggunakan Amazon SQS, Amazon SNS, dan Lambda](how-to-enable-disable-notification-intro.md).

Anda dapat melakukan semua langkah ini menggunakan konsol, tanpa menulis kode apa pun. Selain itu, contoh kode yang digunakan AWS SDKs untuk Java dan .NET juga disediakan untuk membantu Anda menambahkan konfigurasi notifikasi secara terprogram.

Prosedur ini mencakup langkah-langkah berikut:

1. Membuat antrean Amazon SQS.

   Menggunakan konsol Amazon SQS, buat antrean SQS. Anda dapat mengakses pesan apa pun yang dikirimkan Amazon S3 ke antrean secara terprogram. Namun, untuk panduan ini, Anda memverifikasi pesan pemberitahuan di konsol. 

   Anda melampirkan kebijakan akses ke antrean untuk memberikan izin kepada Amazon S3 untuk memposting pesan.

1. Buat topik Amazon SNS.

   Dengan konsol Amazon SNS, buat topik SNS dan berlangganan ke topik tersebut. Dengan begitu, setiap peristiwa yang diposting ke sana dikirimkan kepada Anda. Anda menentukan email sebagai protokol komunikasi. Setelah Anda membuat topik, Amazon SNS mengirim email. Anda menggunakan tautan dalam email untuk mengonfirmasi langganan topik. 

   Anda melampirkan kebijakan akses ke topik untuk memberikan izin kepada Amazon S3 untuk memposting pesan. 

1. Tambahkan konfigurasi pemberitahuan ke bucket. 

## Langkah 1: Buat antrean Amazon SQS
<a name="step1-create-sqs-queue-for-notification"></a>

Ikuti langkah-langkah untuk membuat dan berlangganan antrean Amazon Simple Queue Service (Amazon SQS).

1. Menggunakan konsol Amazon SQS, buat antrean. Untuk instruksi, lihat [Memulai dengan Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) dalam *Panduan Pengembang Amazon Simple Queue Service*. 

1. Ganti kebijakan akses yang terlampir pada antrean dengan kebijakan berikut.

   1. Di konsol Amazon SQS, dalam daftar Antrian, pilih **nama antrean**.

   1. Pada tab **Kebijakan akses**, pilih **Edit**.

   1. Ganti kebijakan akses yang terlampir ke antrean. Di dalamnya, berikan ARN Amazon SQS, nama bucket sumber, dan ID akun pemilik bucket.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. Pilih **Simpan**.

1. (Opsional) Jika antrean Amazon SQS atau topik Amazon SNS diaktifkan dengan enkripsi sisi server dengan AWS Key Management Service (AWS KMS), tambahkan kebijakan berikut ke kunci terkelola pelanggan enkripsi simetris terkait. 

   Anda harus menambahkan kebijakan ke CMK karena Anda tidak dapat memodifikasi kunci AWS terkelola untuk Amazon SQS atau Amazon SNS. 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Untuk informasi selengkapnya tentang penggunaan SSE untuk Amazon SQS dan Amazon SNS AWS KMS with, lihat berikut ini:
   + [Pengelolaan kunci](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) di *Panduan Pengembang Layanan Notifikasi Sederhana Amazon*.
   + [Pengelolaan kunci](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) di *Panduan Pengembang Layanan Antrean Sederhana Amazon*.

1. Perhatikan antrean ARN. 

   Antrean SQS yang Anda buat adalah sumber daya lain di Akun AWS Anda. Amazon Resource Name (ARN) yang unik. Anda membutuhkan ARN ini di langkah berikutnya. ARN memiliki format berikut:

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## Langkah 2: Buat Topik Amazon SNS
<a name="step1-create-sns-topic-for-notification"></a>

Ikuti langkah-langkah untuk membuat dan berlangganan topik Amazon SNS.

1. Menggunakan konsol Amazon SNS membuat topik. Untuk instruksi, lihat [Membuat topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) dalam *Panduan Pengembang Amazon Simple Notification Service*. 

1. Berlangganan topik tersebut. Untuk latihan ini, gunakan email sebagai protokol komunikasi. Untuk instruksi, lihat [Berlangganan topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) dalam *Panduan Pengembang Amazon Simple Notification Service*. 

   Anda mendapatkan email yang meminta Anda untuk mengonfirmasi langganan Anda ke topik tersebut. Konfirmasi langganan. 

1. Ganti kebijakan akses yang terlampir pada topik dengan kebijakan berikut. Di dalamnya, berikan ARN topik SNS, nama bucket, dan ID akun pemilik bucket.

1. Perhatikan topik ARN.

   Topik SNS yang Anda buat adalah sumber daya lain di Anda Akun AWS, dan memiliki ARN yang unik. Anda akan membutuhkan ARN ini di langkah berikutnya. ARN akan memiliki format berikut:

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## Langkah 3: Menambahkan konfigurasi notifikasi ke bucket Anda
<a name="step2-enable-notification"></a>

Anda dapat mengaktifkan notifikasi bucket baik dengan menggunakan konsol Amazon S3 atau secara terprogram dengan menggunakan. AWS SDKs Memilih salah satu opsi untuk mengonfigurasi notifikasi pada bucket Anda. Bagian ini memberikan contoh kode menggunakan AWS SDKs untuk Java dan .NET.

### Opsi A: Mengaktifkan notifikasi pada bucket menggunakan konsol tersebut
<a name="step2-enable-notification-using-console"></a>

Menggunakan konsol Amazon S3, menambahkan konfigurasi notifikasi yang meminta Amazon S3 untuk melakukan hal berikut ini:
+ Terbitkan peristiwa **Semua objek membuat peristiwa** ke antrean Amazon SQS Anda.
+ Terbitkan peristiwa **Objek dalam RRS hilang** ketik topik Amazon SNS Anda.

Setelah Anda menyimpan konfigurasi pemberitahuan, Amazon S3 memposting pesan uji, yang Anda dapatkan melalui email. 

Untuk petunjuk, lihat [Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3](enable-event-notifications.md). 

### Opsi B: Aktifkan notifikasi pada ember menggunakan AWS SDKs
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

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

Contoh kode C\$1 berikut memberikan daftar kode lengkap yang menambahkan konfigurasi pemberitahuan ke bucket. Anda harus memperbarui kode dan memberikan nama bucket dan ARN topik SNS. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat [Memulai SDK for .NET di AWSAWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

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

Untuk contoh cara mengonfigurasi notifikasi bucket dengan AWS SDK for Java, [lihat Memproses pemberitahuan peristiwa S3](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html) di Referensi API *Amazon S3*.

------

## Langkah 4: Menguji pengaturan
<a name="notification-walkthrough-1-test"></a>

Sekarang Anda dapat menguji pengaturan dengan mengunggah objek ke bucket Anda dan memverifikasi pemberitahuan peristiwa di konsol Amazon SQS. Untuk instruksi, lihat [Menerima Pesan](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html) dalam *Bagian "Memulai" Panduan Pengembang Amazon Simple Queue Service*. 

# Mengonfigurasi notifikasi peristiwa dengan filter nama kunci objek
<a name="notification-how-to-filtering"></a>

Ketika mengkonfigurasi notifikasi peristiwa Amazon S3, Anda harus menentukan mana jenis peristiwa Amazon S3 yang didukung yang menyebabkan Amazon S3 untuk mengirim notifikasi. Jika jenis peristiwa yang Anda tidak tentukan terjadi di bucket S3 Anda, Amazon S3 tidak mengirim notifikasi.

Anda dapat mengonfigurasi pemberitahuan untuk difilter dengan prefiks dan sufiks nama kunci objek. Misalnya, Anda dapat menyiapkan konfigurasi di mana Anda akan dikirimi pemberitahuan hanya ketika file gambar dengan ekstensi nama file "`.jpg`" file ditambahkan ke bucket. Atau, Anda dapat memiliki konfigurasi yang mengirimkan pemberitahuan ke topik Amazon SNS ketika objek dengan awalan `images/` "" ditambahkan ke ember, sambil memiliki pemberitahuan untuk objek dengan awalan `logs/` "" di ember yang sama dikirim ke suatu fungsi. AWS Lambda 

**catatan**  
Karakter wildcard (“\$1”) tidak dapat digunakan dalam filter sebagai prefiks atau sufiks. Jika prefiks atau sufiks Anda mengandung spasi, Anda harus menggantinya dengan karakter "\$1". Jika Anda menggunakan karakter kustom apa pun dalam nilai prefiks atau sufiks, Anda harus memasukkan mereka ke dalam [Format yang dikodekan URL (persen-dikodekan)](https://en.wikipedia.org/wiki/Percent-encoding). Untuk daftar lengkap karakter kustom yang harus dikonversi ke format yang dikodekan URL saat digunakan dalam prefiks atau sufiks untuk pemberitahuan peristiwa, lihat. [Karakter aman](object-keys.md#object-key-guidelines-safe-characters)

Anda dapat mengatur konfigurasi notifikasi yang menggunakan filter nama kunci objek di konsol Amazon S3. Anda dapat melakukannya dengan menggunakan Amazon S3 APIs melalui AWS SDKs atau REST APIs secara langsung. Untuk informasi tentang penggunaan UI konsol tersebut untuk mengatur konfigurasi notifikasi pada bucket, lihat [Mengaktifkan dan mengonfigurasi notifikasi peristiwa menggunakan konsol Amazon S3](enable-event-notifications.md). 

Amazon S3 menyimpan konfigurasi pemberitahuan sebagai XML di sub-sumber daya *notifikasi* yang terkait dengan bucket, seperti yang telah dijelaskan di [Menggunakan Amazon SQS, Amazon SNS, dan Lambda](how-to-enable-disable-notification-intro.md). Anda menggunakan struktur XML `Filter` untuk menentukan aturan notifikasi yang akan difilter dengan prefiks atau sufiks nama kunci objek. Untuk informasi tentang struktur XML `Filter`, lihat [Notifikasi PUT Bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) di *Referensi API Amazon Simple Storage Service*. 

Konfigurasi pemberitahuan yang menggunakan `Filter` tidak dapat menentukan aturan pemfilteran dengan prefiks yang tumpang tindih, sufiks yang tumpang tindih, atau prefiks dan sufiks yang tumpang tindih. Bagian berikut memiliki contoh konfigurasi pemberitahuan yang valid dengan pemfilteran nama kunci objek. Juga berisi contoh konfigurasi notifikasi yang tidak valid karena prefiks dan sufiks tumpang tindih. 

**Topics**
+ [Contoh konfigurasi pemberitahuan yang valid dengan pemfilteran nama kunci objek](#notification-how-to-filtering-example-valid)
+ [Contoh konfigurasi notifikasi dengan prefiks dan sufiks yang tidak valid saling tumpang tindih](#notification-how-to-filtering-examples-invalid)

## Contoh konfigurasi pemberitahuan yang valid dengan pemfilteran nama kunci objek
<a name="notification-how-to-filtering-example-valid"></a>

Konfigurasi notifikasi berikut berisi konfigurasi antrean yang mengidentifikasi antrean Amazon SQS untuk Amazon S3 untuk menerbitkan peristiwa ke jenis `s3:ObjectCreated:Put`. Peristiwa dipublikasikan kapan pun objek yang memiliki prefiks `images/` dan sufiks `jpg` di-PUT ke dalam bucket. 

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

Konfigurasi pemberitahuan berikut memiliki beberapa prefiks yang tidak tumpang tindih. Konfigurasi tersebut menentukan bahwa notifikasi untuk permintaan PUT di folder `images/` masuk ke antrean A, sedangkan notifikasi untuk permintaan PUT di `logs/` masuk ke antrean B.

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

Konfigurasi notifikasi berikut memiliki beberapa sufiks yang tidak tumpang tindih. Konfigurasi mendefinisikan bahwa semua `.jpg` gambar yang baru ditambahkan ke bucket diproses oleh cloud-function-A Lambda, dan semua gambar yang baru `.png` ditambahkan diproses oleh. cloud-function-B Sufiks `.png` dan `.jpg` sufiks tidak tumpang tindih meskipun mereka memiliki huruf terakhir yang sama. Jika string tertentu dapat diakhiri dengan kedua sufiks, kedua sufiks dianggap sebagai tumpang tindih. String tidak dapat diakhiri dengan kedua `.png` dan `.jpg`, sehingga sufiks dalam konfigurasi contoh tidak tumpang tindih dengan sufiks. 

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

Konfigurasi notifikasi Anda yang menggunakan `Filter` tidak dapat menentukan aturan pemfilteran dengan prefiks yang tumpang tindih untuk jenis peristiwa yang sama. Mereka hanya bisa melakukannya, jika prefiks tumpang tindih yang digunakan dengan sufiks yang tidak tumpang tindih. Konfigurasi contoh berikut ini menunjukkan bagaimana objek yang dibuat dengan prefiks yang sama, tetapi sufiks yang tidak tumpang tindih dapat dikirim ke tujuan yang berbeda.

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## Contoh konfigurasi notifikasi dengan prefiks dan sufiks yang tidak valid saling tumpang tindih
<a name="notification-how-to-filtering-examples-invalid"></a>

Pada umumnya, konfigurasi pemberitahuan Anda yang menggunakan `Filter` tidak dapat menentukan aturan pemfilteran dengan prefiks yang tumpang tindih, sufiks yang tumpang tindih, atau kombinasi prefiks dan sufiks yang tumpang tindih untuk jenis peristiwa yang sama. Anda dapat memiliki prefiks yang tumpang tindih selama sufiks tidak tumpang tindih. Sebagai contoh, lihat [Mengonfigurasi notifikasi peristiwa dengan filter nama kunci objek](#notification-how-to-filtering).

Anda dapat menggunakan filter nama kunci objek yang tumpang tindih dengan jenis peristiwa yang berbeda. Misalnya, Anda dapat membuat konfigurasi notifikasi yang menggunakan prefiks `image/` untuk jenis peristiwa `ObjectCreated:Put`, dan prefiks `image/` untuk jenis peristiwa `ObjectRemoved:*`. 

Anda mendapatkan kesalahan jika mencoba menyimpan konfigurasi pemberitahuan yang memiliki filter nama yang tumpang tindih yang tidak valid untuk jenis peristiwa yang sama saat menggunakan konsol atau API Amazon S3. Bagian ini menunjukkan contoh konfigurasi notifikasi yang tidak valid karena filter nama yang tumpang tindih. 

Aturan konfigurasi pemberitahuan apa pun yang ada diasumsikan memiliki prefiks dan sufiks default yang cocok dengan setiap prefiks dan sufiks lain. Konfigurasi pemberitahuan berikut tidak valid karena memiliki prefiks yang tumpang tindih. Secara kustom, prefiks root tumpang tindih dengan prefiks lainnya. Hal yang sama berlaku jika Anda menggunakan sufiks alih-alih prefiks dalam contoh ini. Akhiran root tumpang tindih dengan sufiks lainnya.

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

Konfigurasi pemberitahuan berikut tidak valid karena memiliki sufiks yang tumpang tindih. Jika string tertentu dapat diakhiri dengan kedua sufiks, kedua sufiks dianggap sebagai tumpang tindih. Sebuah string dapat diakhiri dengan `jpg` dan `pg`. Jadi, sufiksnya tumpang tindih. Hal yang sama berlaku untuk prefiks. Jika string tertentu dapat dimulai dengan kedua prefiks, kedua prefiks dianggap tumpang tindih.

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

Konfigurasi notifikasi berikut tidak valid karena memiliki prefiks dan sufiks yang tumpang tindih. 

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```

# Struktur pesan peristiwa
<a name="notification-content-structure"></a>

Pesan pemberitahuan yang dikirimkan Amazon S3 untuk menerbitkan kegiatan ada dalam format JSON.

Untuk ikhtisar umum dan petunjuk tentang mengonfigurasi pemberitahuan peristiwa, lihat [Notifikasi Peristiwa Amazon S3](EventNotifications.md).

Contoh ini menunjukkan *versi 2.1* dari struktur JSON pemberitahuan acara. Amazon S3 menggunakan *versi 2.1*, *2.2*, dan *2.3* dari struktur peristiwa ini. Amazon S3 menggunakan versi 2.2 untuk pemberitahuan peristiwa replikasi lintas wilayah. Ini menggunakan versi 2.3 untuk Siklus Hidup S3, S3 Intelligent-Tiering, objek ACL, penandaan objek, dan peristiwa penghapusan restorasi objek. Versi ini berisi informasi tambahan kustom untuk operasi ini. Versi 2.2 dan 2.3 sebaliknya kompatibel dengan versi 2.1, yang saat ini digunakan Amazon S3 untuk semua jenis pemberitahuan peristiwa lainnya.

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

Perhatikan hal berikut tentang struktur pesan peristiwa:
+ Nilai kunci `eventVersion` mengandung versi besar dan kecil, dalam bentuk `major`.`minor`.

  Versi utama bertambah jika Amazon S3 membuat perubahan pada struktur peristiwa yang tidak kompatibel dengan versi sebelumnya. Ini termasuk menghapus bidang JSON yang sudah ada atau mengubah bagaimana isi bidang direpresentasikan (misalnya, format tanggal).

  Versi minor ditingkatkan jika Amazon S3 menambahkan bidang baru ke struktur peristiwa. Hal ini dapat terjadi jika informasi baru diberikan untuk beberapa atau semua peristiwa yang ada. Ini mungkin juga terjadi jika informasi baru disediakan hanya untuk jenis acara yang baru diperkenalkan. Agar tetap kompatibel dengan versi minor baru dari struktur acara, kami menyarankan agar aplikasi Anda mengabaikan bidang baru.

  Jika jenis acara baru diperkenalkan, tetapi struktur acara dinyatakan tidak dimodifikasi, versi acara tidak berubah.

  Untuk memastikan aplikasi Anda dapat menguraikan struktur peristiwa dengan benar, kami menyarankan Anda melakukan perbandingan yang setara dengan nomor versi besar. Untuk memastikan bahwa bidang yang diharapkan oleh aplikasi Anda ada, kami juga merekomendasikan melakukan perbandingan greater-than-or-equal -to pada versi minor.
+ Nilai `eventName` kunci mereferensikan daftar [jenis pemberitahuan acara](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html) tetapi tidak berisi `s3:` awalan.
+ Nilai `userIdentity` kunci mereferensikan ID unik dari sumber daya AWS Identity and Access Management (IAM) (pengguna, peran, grup, dan sebagainya) yang menyebabkan peristiwa tersebut. [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids)
+ Nilai `responseElements` kunci berguna jika Anda ingin melacak permintaan dengan menindaklanjuti AWS Dukungan. Baik `x-amz-request-id` maupun `x-amz-id-2` membantu Amazon S3 menelusuri permintaan individu. Nilai-nilai ini sama dengan nilai yang dikembalikan Amazon S3 sebagai respons terhadap permintaan yang memulai peristiwa. Oleh karena itu, Anda dapat menggunakan nilai-nilai ini untuk mencocokkan acara dengan permintaan.
+ Nilai `s3` kunci memberikan informasi tentang bucket dan objek yang terlibat dalam acara tersebut. Nilai nama kunci objek dienkode URL. Misalnya, `red flower.jpg` menjadi `red+flower.jpg`. (Amazon S3 mengembalikan "`application/x-www-form-urlencoded`" sebagai jenis konten dalam respons.)

  Nilai `ownerIdentity` kunci sesuai dengan ID pelanggan ritel Amazon (Amazon.com) dari pemilik bucket. Nilai ID ini tidak lagi digunakan dan dipertahankan hanya untuk kompatibilitas mundur. 
+ Nilai `sequencer` kunci menyediakan cara untuk menentukan urutan peristiwa. Pemberitahuan peristiwa tidak dijamin akan tiba dalam urutan yang sama dengan peristiwa yang terjadi. Namun, pemberitahuan dari peristiwa yang membuat objek (`PUT`permintaan) dan menghapus objek berisi file`sequencer`. Anda dapat menggunakan nilai ini untuk menentukan urutan peristiwa untuk kunci objek yang diberikan. 

  Jika Anda membandingkan string `sequencer` dari dua notifikasi peristiwa pada kunci objek yang sama, pemberitahuan peristiwa dengan nilai heksadesimal `sequencer` yang lebih besar adalah peristiwa yang terjadi kemudian. Jika Anda menggunakan notifikasi peristiwa untuk memelihara basis data atau indeks terpisah dari objek Amazon S3, kami sarankan Anda membandingkan dan menyimpan nilai `sequencer` saat Anda memproses setiap pemberitahuan peristiwa. 

  Perhatikan hal-hal berikut:
  + Anda tidak dapat menggunakan nilai `sequencer` kunci untuk menentukan urutan peristiwa pada kunci objek yang berbeda.
  + `sequencer`Senar bisa memiliki panjang yang berbeda. Jadi, untuk membandingkan nilai-nilai ini, pertama-tama kiri-pad nilai yang lebih pendek dengan nol, dan kemudian lakukan perbandingan leksikografis.
+ Nilai `glacierEventData` kunci hanya terlihat untuk `s3:ObjectRestore:Completed` acara. 
+ Nilai `restoreEventData` kunci berisi atribut yang terkait dengan permintaan pemulihan Anda.
+ Nilai `replicationEventData` kunci hanya terlihat untuk peristiwa replikasi.
+ Nilai `intelligentTieringEventData` kunci hanya terlihat untuk acara S3 Intelligent-Tiering.
+ Nilai `lifecycleEventData` kunci hanya terlihat untuk peristiwa transisi Siklus Hidup S3.

## Contoh pesan
<a name="notification-content-structure-examples"></a>

Berikut ini adalah contoh dari pesan notifikasi peristiwa Amazon S3.

**Olahpesan pengujian Amazon S3**  
Setelah mengonfigurasi notifikasi peristiwa di bucket, Amazon S3 mengirimkan pesan pengujian berikut.

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**catatan**  
`s3:TestEvent`Pesan menggunakan format yang berbeda dari notifikasi acara S3 biasa. Tidak seperti pemberitahuan acara lain yang menggunakan struktur `Records` array yang ditunjukkan sebelumnya, acara pengujian menggunakan format yang disederhanakan dengan bidang langsung. Saat menerapkan penanganan acara, pastikan kode Anda dapat membedakan antara dan menangani kedua format pesan dengan benar.

**Contoh pesan saat objek dibuat menggunakan `PUT` permintaan**  
Berikut ini adalah contoh pesan yang dikirimkan Amazon S3 untuk menerbitkan peristiwa `s3:ObjectCreated:Put`.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```

