Walkthrough: Mengonfigurasi bucket untuk notifikasi (SNStopik atau antrian) 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.

Walkthrough: Mengonfigurasi bucket untuk notifikasi (SNStopik atau antrian) SQS

Anda dapat menerima notifikasi Amazon S3 menggunakan Amazon Simple Notification Service (AmazonSNS) atau Amazon Simple Queue Service (Amazon). SQS Dalam panduan ini, Anda menambahkan konfigurasi notifikasi ke bucket menggunakan SNS topik Amazon dan antrean AmazonSQS.

catatan

Antrian 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 SQS FIFO antrian Amazon, Anda dapat menggunakan Amazon. EventBridge Untuk informasi selengkapnya, lihat Mengaktifkan Amazon EventBridge.

Ringkasan panduan

Panduan ini membantu Anda melakukan hal berikut ini:

  • Publikasikan peristiwa dari s3:ObjectCreated:* jenis tersebut ke SQS antrian Amazon.

  • Publikasikan acara dari s3:ReducedRedundancyLostObject jenis tersebut ke SNS topik Amazon.

Untuk informasi tentang konfigurasi pemberitahuan, lihat Menggunakan AmazonSQS, AmazonSNS, 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. NETjuga disediakan untuk membantu Anda menambahkan konfigurasi notifikasi secara terprogram.

Prosedur ini mencakup langkah-langkah berikut:

  1. Buat SQS antrian Amazon.

    Menggunakan SQS konsol Amazon, buat SQS antrian. 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 SNS topik Amazon.

    Menggunakan SNS konsol Amazon, buat SNS topik dan berlangganan topik. 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 SQS antrian Amazon

Ikuti langkah-langkah untuk membuat dan berlangganan antrian Amazon Simple Queue Service (AmazonSQS).

  1. Menggunakan SQS konsol Amazon, buat antrian. Untuk petunjuk, lihat Memulai Amazon SQS di Panduan Pengembang Layanan Antrian Sederhana Amazon.

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

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

    2. Pada tab Kebijakan akses, pilih Edit.

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

      { "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 SQS antrean Amazon atau SNS topik Amazon adalah enkripsi sisi server yang diaktifkan dengan AWS Key Management Service (AWS KMS), tambahkan kebijakan berikut ke kunci terkelola pelanggan enkripsi simetris terkait.

    Anda harus menambahkan kebijakan ke kunci yang dikelola pelanggan karena Anda tidak dapat mengubah kunci AWS terkelola untuk Amazon SQS atau AmazonSNS.

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

  4. Perhatikan antrianARN.

    SQSAntrian yang Anda buat adalah sumber daya lain di Anda Akun AWS. Ini memiliki Nama Sumber Daya Amazon yang unik (ARN). Anda membutuhkan ini ARN di langkah berikutnya. ARNIni adalah format berikut:

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

Langkah 2: Buat SNS topik Amazon

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

  1. Menggunakan SNS konsol Amazon, buat topik. Untuk petunjuknya, lihat Membuat SNS topik Amazon di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.

  2. Berlangganan topik tersebut. Untuk latihan ini, gunakan email sebagai protokol komunikasi. Untuk petunjuk, lihat Berlangganan SNS topik Amazon di Panduan Pengembang Layanan Pemberitahuan Sederhana Amazon.

    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 SNS topikARN, nama bucket, dan ID akun pemilik bucket Anda.

    { "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 topiknyaARN.

    SNSTopik yang Anda buat adalah sumber daya lain di Anda Akun AWS, dan memiliki keunikanARN. Anda akan membutuhkan ini ARN di langkah berikutnya. ARNAkan dari 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:

  • Publikasikan peristiwa dari Semua objek membuat jenis peristiwa ke SQS antrian Amazon Anda.

  • Publikasikan peristiwa Objek dalam tipe yang RRS hilang ke SNS topik Amazon Anda.

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

Untuk petunjuk, silakan 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 dan SNS topik bucket AndaARN. Untuk informasi tentang menyiapkan dan menjalankan contoh kode, lihat Memulai dengan AWS SDK for. NETdi AWS SDKuntuk. NETPanduan Pengembang.

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 for 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 penyiapan dengan mengunggah objek ke bucket Anda dan memverifikasi pemberitahuan peristiwa di SQS konsol Amazon. Untuk instruksi, lihat Menerima Pesan dalam Bagian "Memulai" Panduan Pengembang Amazon Simple Queue Service.