Panduan: Mengonfigurasi bucket untuk notifikasi (topik SNS atau antrean SQS) - Amazon Simple Storage Service

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)

Anda dapat menerima notifikasi Amazon S3 menggunakan Amazon Simple Notification 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.

Ringkasan panduan

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.

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.

  2. 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.

  3. Tambahkan konfigurasi pemberitahuan ke bucket.

Langkah 1: Buat antrean Amazon SQS

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 dalam Panduan Pengembang Amazon Simple Queue Service.

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

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

    2. Pada tab Kebijakan akses, pilih Edit.

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

      { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "SQS-queue-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }
    4. Pilih Simpan.

  3. (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.

    { "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 menggunakan SSE untuk Amazon SQS dan Amazon SNS AWS KMS with, lihat berikut ini:

  4. 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

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

  1. Menggunakan konsol Amazon SNS membuat topik. Untuk instruksi, lihat Membuat topik Amazon SNS dalam Panduan Pengembang Amazon Simple Notification Service.

  2. Berlangganan topik tersebut. Untuk latihan ini, gunakan email sebagai protokol komunikasi. Untuk instruksi, lihat Berlangganan topik Amazon SNS dalam Panduan Pengembang Amazon Simple Notification Service.

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

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

    { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "Example SNS topic policy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "SNS-topic-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }
  4. 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

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

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.

Opsi B: Aktifkan notifikasi pada ember menggunakan AWS SDKs

.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 .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

Contoh berikut menunjukkan cara menambahkan konfigurasi pemberitahuan ke bucket. Untuk petunjuk tentang cara membuat dan menguji sampel kerja, lihat Memulai di Panduan AWS SDK untuk Java Pengembang.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.EnumSet; public class EnableNotificationOnABucket { public static void main(String[] args) throws IOException { String bucketName = "*** Bucket name ***"; Regions clientRegion = Regions.DEFAULT_REGION; String snsTopicARN = "*** SNS Topic ARN ***"; String sqsQueueARN = "*** SQS Queue ARN ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); BucketNotificationConfiguration notificationConfiguration = new BucketNotificationConfiguration(); // Add an SNS topic notification. notificationConfiguration.addConfiguration("snsTopicConfig", new TopicConfiguration(snsTopicARN, EnumSet.of(S3Event.ObjectCreated))); // Add an SQS queue notification. notificationConfiguration.addConfiguration("sqsQueueConfig", new QueueConfiguration(sqsQueueARN, EnumSet.of(S3Event.ObjectCreated))); // Create the notification configuration request and set the bucket notification // configuration. SetBucketNotificationConfigurationRequest request = new SetBucketNotificationConfigurationRequest( bucketName, notificationConfiguration); s3Client.setBucketNotificationConfiguration(request); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

Langkah 4: Menguji pengaturan

Sekarang Anda dapat menguji pengaturan dengan mengunggah objek ke bucket Anda dan memverifikasi pemberitahuan peristiwa di konsol Amazon SQS. Untuk instruksi, lihat Menerima Pesan dalam Bagian "Memulai" Panduan Pengembang Amazon Simple Queue Service.