Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim olahpesan Amazon SNS ke antrean Amazon SQS di akun yang berbeda
Dokumen ini menjelaskan cara mempublikasikan pemberitahuan ke topik Amazon SNS dengan satu atau beberapa langganan ke antrian Amazon SQS di akun lain. Atur topik dan antrean dengan cara yang sama jika mereka berada di akun yang sama (lihat Pemberitahuan Fanout Amazon SNS ke antrian Amazon SQS untuk pemrosesan asinkron). Perbedaan utamanya adalah cara Anda menangani konfirmasi berlangganan, dan itu tergantung pada cara Anda berlangganan antrean ke topik.
Ini adalah praktik terbaik untuk mengikuti langkah-langkah yang direferensikan di bagian Queue owner create subscription bila memungkinkan, karena konfirmasi otomatis ketika pemilik antrian membuat langganan.
catatan
Jika antrian Amazon SQS memiliki volume pesan yang tinggi, sebaiknya pemilik antrian membuat langganan.
Pemilik antrean membuat langganan
Akun yang membuat antrean Amazon SQS adalah pemilik antrean. Saat pemilik antrean membuat langganan, maka memerlukan konfirmasi. Antrean mulai menerima notifikasi dari topik segera setelah tindakan Subscribe
selesai. Agar pemilik antrean berlangganan pada pemilik topik, pemilik topik harus memberikan izin akun pemilik antrean untuk memanggil tindakan Subscribe
pada topik.
Langkah 1: Untuk menetapkan kebijakan topik menggunakan AWS Management Console
Masuk ke Konsol Amazon SNS
. -
Di panel navigasi, pilih Topics (Topik).
-
Pilih topik, kemudian pilih Edit (Edit).
-
Pada
MyTopic
halaman Edit, perluas bagian Kebijakan akses. -
Masukkan kebijakan berikut:
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }
Kebijakan ini memberikan
111122223333
izin akun untuk meneleponsns:Subscribe
MyTopic
di akun123456789012
.Seorang pengguna dengan kredensi untuk akun
111122223333
dapat berlangganan.MyTopic
Izin ini memungkinkan ID akun untuk mendelegasikan izin kepada pengguna/peran IAM mereka. Hanya akun root atau pengguna administrator yang diizinkan untuk meneleponsns:Subscribe
. Pengguna/peran IAM juga harus mengizinkan antrian merekasns:subscribe
untuk berlangganan. -
Pilih Simpan perubahan.
Seorang pengguna dengan kredensi untuk akun
111122223333
dapat berlangganan. MyTopic
Langkah 2: Untuk menambahkan langganan antrian Amazon SQS ke topik lain menggunakan Akun AWSAWS Management Console
Sebelum Anda mulai, pastikan Anda memiliki topik dan antrian Anda, dan bahwa Anda telah memberikan izin untuk topik untuk mengirim pesan ke antrian. ARNs
Masuk ke konsol Amazon SQS
. -
Pada panel navigasi, pilih Antrian.
-
Dari daftar antrian, pilih antrian untuk berlangganan topik Amazon SNS.
-
Pilih Berlangganan topik Amazon SNS.
-
Dari Tentukan topik Amazon SNS yang tersedia untuk menu antrian ini, pilih topik Amazon SNS untuk antrian Anda.
-
Pilih Masukkan topik Amazon SNS ARN dan kemudian masukkan nama sumber daya Amazon (ARN) topik.
-
Pilih Simpan.
catatan
-
Untuk dapat berkomunikasi dengan layanan, antrean harus memiliki izin untuk Amazon SNS.
-
Karena Anda adalah pemilik antrean, Anda tidak perlu mengonfirmasi langganan.
-
Pengguna yang tidak memiliki antrian membuat langganan
Setiap pengguna yang membuat langganan tetapi bukan pemilik antrean harus mengonfirmasi langganan.
Ketika Anda menggunakan tindakan Subscribe
, Amazon SNS mengirimkan konfirmasi langganan ke antrean. Langganan ditampilkan di konsol Amazon SNS, dengan ID langganan diatur ke Pending Confirmation (Menunggu Konfirmasi).
Untuk mengonfirmasi langganan, pengguna dengan izin untuk membaca pesan dari antrian harus mengambil URL konfirmasi langganan, dan pemilik langganan harus mengonfirmasi langganan menggunakan URL konfirmasi langganan. Tidak ada notifikasi yang dipublikasikan ke topik yang dikirim ke antrean sampai langganan dikonfirmasi. Untuk mengonfirmasi langganan, Anda dapat menggunakan konsol Amazon SQS atau tindakan ReceiveMessage
.
catatan
Sebelum Anda berlangganan endpoint ke topik, pastikan antrean dapat menerima olahpesan dari topik dengan menetapkan izin sqs:SendMessage
untuk antrean. Untuk informasi selengkapnya, lihat Langkah 2: Berikan izin untuk topik Amazon SNS untuk mengirim pesan ke antrean Amazon SQS.
Langkah 1: Untuk menambahkan langganan antrian Amazon SQS ke topik lain menggunakan Akun AWSAWS Management Console
Sebelum Anda mulai, pastikan Anda memiliki topik dan antrian Anda, dan bahwa Anda telah memberikan izin untuk topik untuk mengirim pesan ke antrian. ARNs
Masuk ke konsol Amazon SNS
. -
Di panel navigasi, pilih Berlangganan.
-
Di halaman Subscriptions (Langganan), pilih Create subscription (Buat langganan).
-
Di halaman Create subscription (Buat langganan), di bagian Details (Detail), lakukan:
-
Untuk ARN Topik, masukkan ARN topik.
-
Untuk Protokol, pilih Amazon SQS.
-
Untuk Endpoint, masukkan ARN antrean.
-
Pilih Create subscription (Buat langganan).
catatan
-
Untuk dapat berkomunikasi dengan layanan, antrean harus memiliki izin untuk Amazon SNS.
-
-
Berikut ini adalah contoh pernyataan kebijakan yang memungkinkan topik Amazon SNS mengirim pesan ke antrian Amazon SQS.
{ "Sid": "Stmt1234", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:111111111111:QueueName", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-west-2:555555555555:TopicName" } } }
Langkah 2: Untuk mengonfirmasi langganan menggunakan AWS Management Console
-
Masuk ke konsol Amazon SQS
. -
Pilih antrean yang memiliki langganan tertunda untuk topik.
-
Pilih Kirim dan terima pesan, lalu pilih Poll untuk pesan.
Olahpesan dengan konfirmasi berlangganan diterima dalam antrean.
-
Di kolom Body (Isi), lakukan:
-
Pilih More Details (Detail selengkapnya).
-
Dalam kotak dialog Rincian Pesan, temukan dan catat nilai SubscribeUrl. Ini adalah tautan langganan Anda (contoh di bawah). Untuk detail tambahan tentang validasi token API, lihat
ConfirmSubscription
di Referensi API Amazon SNS.https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:MyTopic&Token=2336412f37fb...
-
Catat tautan konfirmasi berlangganan. URL harus diteruskan dari pemilik antrian ke pemilik langganan. Pemilik langganan harus memasukkan URL ke konsol Amazon SNS
.
-
-
Masuk sebagai pemilik langganan ke konsol Amazon SNS
Pemilik langganan melakukan konfirmasi. -
Pilih topik yang relevan.
-
Pilih langganan yang relevan di tabel daftar langganan topik. Ini diberi label sebagai “Konfirmasi tertunda”.
-
Pilih Konfirmasi langganan.
-
Modal muncul yang meminta tautan konfirmasi berlangganan. Rekatkan tautan konfirmasi berlangganan.
-
Pilih Konfirmasi langganan di modal.
Respons XML ditampilkan, misalnya:
<ConfirmSubscriptionResponse> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-bc89-012d-3e45-6fg7h890123i</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>
Antrean berlangganan siap menerima olahpesan dari topik.
-
(Opsional) Jika Anda melihat topik langganan di konsol Amazon SNS, Anda dapat melihat bahwa olahpesan Pending Confirmation (Menunggu Konfirmasi) telah digantikan oleh langganan ARN di kolom Subscription ID (ID Langganan).
Bagaimana cara memaksa langganan untuk meminta otentikasi pada permintaan berhenti berlangganan?
Pemilik langganan harus menyetel AuthenticateOnUnsubscribe
bendera ke true pada konfirmasi langganan.
-
AuthenticateOnUnsubscribe
secara otomatis disetel ke true saat pemilik antrian membuat langganan. -
AuthenticateOnUnsubscribe
tidak dapat disetel ke true saat tautan konfirmasi langganan dinavigasi tanpa autentikasi.