

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

# 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\# 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*. 