Berlangganan SQS antrian Amazon ke topik Amazon SNS - Amazon Simple Notification Service

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

Berlangganan SQS antrian Amazon ke topik Amazon SNS

Untuk mengaktifkan SNS topik Amazon untuk mengirim pesan ke SQS antrian Amazon, lakukan salah satu hal berikut:

Untuk mempelajari cara mengatur topik untuk mengirim pesan ke antrean yang ada di AWS akun lain, lihat. Mengirim SNS pesan Amazon ke SQS antrian Amazon di akun yang berbeda

Untuk melihat AWS CloudFormation template yang membuat topik yang mengirim pesan ke dua antrian, lihat. Otomatiskan SQS pesan Amazon SNS ke Amazon dengan AWS CloudFormation

Langkah 1: Dapatkan antrian dan topik ARN

Saat berlangganan antrian ke topik Anda, Anda memerlukan salinan ARN untuk antrian. Demikian pula, ketika memberikan izin untuk topik untuk mengirim pesan ke antrian, Anda akan memerlukan salinan ARN untuk topik tersebut.

Untuk mendapatkan antrianARN, Anda dapat menggunakan SQS konsol Amazon atau GetQueueAttributesAPItindakan.

Untuk mendapatkan antrian ARN dari konsol Amazon SQS
  1. Masuk ke AWS Management Console dan buka SQS konsol Amazon di https://console.aws.amazon.com/sqs/.

  2. Pilih kotak untuk antrian yang ingin ARN Anda dapatkan.

  3. Dari bagian Detail, salin ARN nilainya sehingga Anda dapat menggunakannya untuk berlangganan SNS topik Amazon.

Untuk mendapatkan topikARN, Anda dapat menggunakan SNS konsol Amazon, sns-get-topic-attributes perintah, atau GetQueueAttributes API tindakan.

Untuk mendapatkan topik ARN dari SNS konsol Amazon
  1. Masuk ke SNSkonsol Amazon.

  2. Pada panel navigasi, pilih topik yang ingin ARN Anda dapatkan.

  3. Dari bagian Detail, salin ARNnilainya sehingga Anda dapat menggunakannya untuk memberikan izin bagi SNS topik Amazon untuk mengirim pesan ke antrian.

Langkah 2: Berikan izin ke SNS topik Amazon untuk mengirim pesan ke SQS antrian Amazon

Agar SNS topik Amazon dapat mengirim pesan ke antrian, Anda harus menetapkan kebijakan pada antrian yang memungkinkan SNS topik Amazon melakukan tindakan. sqs:SendMessage

Sebelum Anda berlangganan antrean ke topik, Anda memerlukan topik dan antrean. Jika Anda belum membuat topik atau antrean, buat sekarang. Untuk informasi selengkapnya, lihat Membuat topik, dan lihat Membuat antrian di Panduan Pengembang Layanan Antrian Sederhana Amazon.

Untuk menetapkan kebijakan pada antrean, Anda dapat menggunakan SQS konsol Amazon atau SetQueueAttributesAPItindakan. Sebelum memulai, pastikan Anda memiliki topik yang ingin Anda izinkan untuk mengirim pesan ke antrian. ARN Jika Anda berlangganan antrian ke beberapa topik, kebijakan Anda harus berisi satu Statement elemen untuk setiap topik.

Untuk menetapkan SendMessage kebijakan pada antrian menggunakan konsol Amazon SQS
  1. Masuk ke AWS Management Console dan buka SQS konsol Amazon di https://console.aws.amazon.com/sqs/.

  2. Pilih kotak untuk antrean kebijakan yang ingin Anda tetapkan, pilih tab Kebijakan akses, lalu pilih Edit.

  3. Di Kebijakan akses, tentukan siapa yang dapat mengakses antrean Anda.

    • Tambahkan kondisi yang memungkinkan tindakan untuk topik.

    • Setel Principal menjadi SNS layanan Amazon, seperti yang ditunjukkan pada contoh di bawah ini.

    • Gunakan aws:SourceArnatau kunci kondisi aws:SourceAccountglobal untuk melindungi dari skenario wakil yang membingungkan. Untuk menggunakan kunci kondisi ini, tetapkan nilainya ke ARN topik Anda. Jika antrian Anda berlangganan beberapa topik, Anda dapat menggunakannya aws:SourceAccount sebagai gantinya.

    Misalnya, kebijakan berikut memungkinkan MyTopic untuk mengirim pesan ke MyQueue.

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }

Langkah 3: Berlangganan antrian ke topik Amazon SNS

Untuk mengirim pesan ke antrian melalui topik, Anda harus berlangganan antrian ke topik AmazonSNS. Anda menentukan antrian dengan nyaARN. Untuk berlangganan topik, Anda dapat menggunakan SNS konsol Amazon, sns-subscribe CLI perintah, atau Subscribe API tindakan. Sebelum Anda mulai, pastikan Anda memiliki antrian yang ingin Anda berlangganan. ARN

  1. Masuk ke SNSkonsol Amazon.

  2. Di panel navigasi, pilih Topik.

  3. PadaTopik, pilih topik.

  4. Pada MyTopic halaman, di halaman Langganan, pilih Buat langganan.

  5. Pada Create subscription (Buat langganan), di halaman Details (Rincian), lakukan hal berikut:

    1. Verifikasi Topiknya ARN.

    2. Untuk Protokol, pilih Amazon SQS.

    3. Untuk Endpoint, masukkan ARN SQS antrean Amazon.

    4. Pilih Buat Langganan.

    Saat langganan dikonfirmasi, ID Langganan baru Anda akan menampilkan ID langganannya. Jika pemilik antrean membuat langganan, langganan secara otomatis dikonfirmasi dan langganan harus segera aktif.

    Biasanya, Anda akan berlangganan antrean Anda sendiri ke topik Anda sendiri di akun Anda sendiri. Namun, Anda juga dapat berlangganan antrean dari akun yang berbeda ke topik Anda. Jika pengguna yang membuat langganan bukan pemilik antrean (misalnya, jika pengguna dari akun A berlangganan antrean dari akun B ke topik di akun A), langganan harus dikonfirmasi. Untuk informasi selengkapnya tentang berlangganan antrean dari akun lain dan mengonfirmasi langganan, lihat Mengirim SNS pesan Amazon ke SQS antrian Amazon di akun yang berbeda.

Langkah 4: Memberikan pengguna izin untuk topik yang sesuai dan tindakan antrian

Anda harus menggunakan AWS Identity and Access Management (IAM) untuk mengizinkan hanya pengguna yang sesuai untuk mempublikasikan ke SNS topik Amazon dan membaca/menghapus pesan dari antrian AmazonSQS. Untuk informasi selengkapnya tentang mengontrol tindakan pada topik dan antrian bagi IAM pengguna, lihatMenggunakan kebijakan berbasis identitas dengan Amazon SNS, serta Manajemen identitas dan akses SQS di Amazon dalam Panduan Pengembang Layanan Antrian Sederhana Amazon.

Ada dua cara untuk mengontrol akses ke topik atau antrean:

  • Tambahkan kebijakan ke IAM pengguna atau grup. Cara termudah untuk memberikan pengguna izin untuk topik atau antrean adalah untuk membuat grup dan menambahkan kebijakan yang sesuai untuk grup dan kemudian menambahkan pengguna ke grup tersebut. Lebih mudah menambahkan dan menghapus pengguna dari grup daripada melacak kebijakan yang Anda tetapkan pada pengguna individual.

  • Menambahkan kebijakan ke topik atau antrean. Jika Anda ingin memberikan izin ke topik atau antrian ke AWS akun lain, satu-satunya cara yang dapat Anda lakukan adalah dengan menambahkan kebijakan yang memiliki prinsipal yang ingin Akun AWS Anda berikan izin.

Anda harus menggunakan metode pertama untuk sebagian besar kasus (menerapkan kebijakan untuk grup dan mengelola izin untuk pengguna dengan menambahkan atau menghapus pengguna yang sesuai ke grup). Jika Anda perlu memberikan izin kepada pengguna di akun lain, Anda harus menggunakan metode kedua.

Menambahkan kebijakan ke IAM pengguna atau grup

Jika Anda menambahkan kebijakan berikut ke IAM pengguna atau grup, Anda akan memberikan izin kepada pengguna atau anggota grup tersebut untuk melakukan sns:Publish tindakan pada topik tersebut MyTopic.

{ "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Jika Anda menambahkan kebijakan berikut ke IAM pengguna atau grup, Anda akan memberikan izin kepada pengguna atau anggota grup tersebut untuk melakukan sqs:ReceiveMessage dan sqs:DeleteMessage tindakan pada antrian MyQueue 1 dan MyQueue 2.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }

Menambahkan kebijakan ke topik atau antrean

Contoh kebijakan berikut menunjukkan bagaimana memberikan izin akun lain untuk topik dan antrean.

catatan

Saat Anda memberikan Akun AWS akses lain ke sumber daya di akun Anda, Anda juga memberi IAM pengguna yang memiliki izin akses tingkat admin (akses wildcard) ke sumber daya tersebut. Semua IAM pengguna lain di akun lain secara otomatis ditolak akses ke sumber daya Anda. Jika Anda ingin memberikan IAM pengguna tertentu dalam Akun AWS akses tersebut ke sumber daya Anda, akun atau IAM pengguna dengan akses tingkat admin harus mendelegasikan izin untuk sumber daya tersebut kepada pengguna tersebut. IAM Untuk informasi selengkapnya tentang delegasi lintas akun, lihat Mengaktifkan Akses Lintas Akun di Panduan Menggunakan. IAM

Jika Anda menambahkan kebijakan berikut ke topik MyTopic di akun 123456789012, Anda akan memberi akun 111122223333 izin untuk melakukan tindakan pada topik tersebut. sns:Publish

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Jika Anda menambahkan kebijakan berikut ke antrian MyQueue di akun 123456789012, Anda akan memberi akun 111122223333 izin untuk melakukan dan tindakan pada antrian tersebut. sqs:ReceiveMessage sqs:DeleteMessage

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }

Langkah 5: Uji langganan antrean topik

Anda dapat menguji langganan antrean topik dengan menerbitkan topik dan melihat pesan yang dikirim topik ke antrean.

Untuk mempublikasikan ke topik menggunakan SNS konsol Amazon
  1. Dengan menggunakan kredensi Akun AWS atau IAM pengguna dengan izin untuk mempublikasikan ke topik, masuk ke AWS Management Console dan buka SNS konsol Amazon di. https://console.aws.amazon.com/sns/

  2. Pada panel navigasi, pilih topik dan pilih Publish to Topic (Publikasikan ke topik).

  3. Di kotak Subject (Subjek), masukkan subjek (misalnya, Testing publish to queue) di kotak Pesan, masukkan beberapa teks (misalnya, Hello world!), dan pilih Publish Message (Publikasikan Pesan). Pesan berikut muncul: Pesan Anda telah berhasil dipublikasikan.

Untuk melihat pesan dari topik menggunakan SQS konsol Amazon
  1. Menggunakan kredensional IAM pengguna Akun AWS atau dengan izin untuk melihat pesan dalam antrian, masuk ke AWS Management Console dan buka konsol Amazon SQS di. https://console.aws.amazon.com/sqs/

  2. Pilih antrian yang berlangganan topik.

  3. Pilih Kirim dan terima pesan, lalu pilih Poll untuk pesan. Sebuah pesan dengan jenis Pemberitahuan akan muncul.

  4. Di kolom Body (Isi), pilih More Details (Detail lebih lanjut). Kotak Rincian Pesan berisi JSON dokumen yang berisi subjek dan pesan yang Anda terbitkan ke topik. Pesannya terlihat mirip dengan JSON dokumen berikut.

    { "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
  5. Pilih Close (Tutup). Anda telah berhasil menerbitkan topik yang mengirimkan pesan pemberitahuan ke antrean.