View a markdown version of this page

Mengirim olahpesan Amazon SNS ke antrean Amazon SQS di akun yang berbeda - Amazon Simple Notification Service

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 menerbitkan pemberitahuan ke topik Amazon SNS dengan satu atau lebih langganan ke antrian Amazon SQS di akun lain. Anda mengatur topik dan antrian dengan cara yang sama seolah-olah mereka berada di akun yang sama (lihatPemberitahuan Amazon SNS Fanout ke antrian Amazon SQS untuk pemrosesan asinkron). Perbedaan utama adalah bagaimana Anda menangani konfirmasi langganan. Itu tergantung pada bagaimana Anda berlangganan antrian ke topik.

Sebaiknya ikuti langkah-langkah di bagian Pemilik antrian membuat langganan jika memungkinkan. Konfirmasi otomatis saat 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. Untuk membiarkan pemilik antrian berlangganan topik, pemilik topik harus memberikan izin akun pemilik antrian untuk memanggil Subscribe tindakan pada topik tersebut.

Langkah 1: Untuk mengatur kebijakan topik menggunakan Konsol Manajemen AWS

  1. Masuk ke Konsol Amazon SNS.

  2. Di panel navigasi, pilih Topics (Topik).

  3. Pilih topik, kemudian pilih Edit (Edit).

  4. Pada MyTopic halaman Edit, perluas bagian Kebijakan akses.

  5. 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 menelep sns:Subscribe MyTopic on akun123456789012.

    Pengguna dengan kredenSIAL untuk akun 111122223333 dapat berlanggananMyTopic. Izin ini memungkinkan ID akun mendelegasikan izin ke IAM user/role mereka. Hanya akun root atau pengguna administrator yang dapat meneleponsns:Subscribe. IAM juga user/role harus memiliki sns:subscribe izin.

  6. Pilih Simpan perubahan.

    Pengguna dengan kredenSIAL untuk akun 111122223333 dapat berlangganan MyTopic.

Langkah 2: Untuk menambahkan langganan antrian Amazon SQS ke topik di topik lain Akun AWS menggunakan Konsol Manajemen AWS

Sebelum Anda mulai, pastikan Anda memiliki ARN untuk topik dan antrian Anda, dan bahwa Anda telah memberikan izin ke topik untuk mengirim pesan ke antri an.

  1. Masuk ke konsol Amazon SQS.

  2. Pada panel navigasi, pilih An trian.

  3. Dari daftar antrian, pilih antrian untuk berlangganan topik Amazon SNS.

  4. Pilih Berlangganan ke topik Amazon SNS.

  5. Dari menu T entukan topik Amazon SNS yang tersedia untuk antrian ini, pilih topik Amazon SNS untuk antrian Anda.

  6. Pilih Masukkan topik Amazon SNS ARN lalu masukkan Nama Sumber Daya Amazon (ARN) topik tersebut.

  7. 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 membaca pesan dari antrian harus mengambil URL konfirmasi langganan. Pemilik langganan kemudian harus mengonfirmasi langganan menggunakan URL tersebut. Sampai dikonfirmasi, tidak ada pemberitahuan yang dipublikasikan ke topik yang dikirim ke antrian. Untuk mengonfirmasi, Anda dapat menggunakan konsol Amazon SQS atau ReceiveMessage tindakan.

catatan

Sebelum Anda berlangganan titik akhir topik, pastikan antrian dapat menerima pesan dari topik tersebut. Tetapkan sqs:SendMessage izin untuk antrian. 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 di topik lain Akun AWS menggunakan Konsol Manajemen AWS

Sebelum Anda mulai, pastikan Anda memiliki ARN untuk topik dan antrian Anda, dan bahwa Anda telah memberikan izin ke topik untuk mengirim pesan ke antri an.

  1. Masuk ke konsol Amazon SNS.

  2. Di panel navigasi, pilih Berlangganan.

  3. Di halaman Subscriptions (Langganan), pilih Create subscription (Buat langganan).

  4. Di halaman Create subscription (Buat langganan), di bagian Details (Detail), lakukan:

    1. Untuk ARN Topik, masukkan ARN topik.

    2. Untuk Protokol, pilih Amazon SQS.

    3. Untuk Endpoint, masukkan ARN antrean.

    4. 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 Konsol Manajemen AWS

  1. Masuk ke konsol Amazon SQS.

  2. Pilih antrean yang memiliki langganan tertunda untuk topik.

  3. Pilih Kirim dan terima pesan, lalu pilih Polling untuk pesan.

    Olahpesan dengan konfirmasi berlangganan diterima dalam antrean.

  4. Di kolom Body (Isi), lakukan:

    1. Pilih More Details (Detail selengkapnya).

    2. Di kotak dialog Rincian Pesan, cari dan catat nilai subscribeURL. Ini adalah tautan langganan Anda (contoh di bawah). Untuk detail selengkapnya 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...
    3. Catat tautan konfirmasi berlangganan. URL harus diteruskan dari pemilik antrian ke pemilik langganan. Pemilik langganan memasukkan URL ke konsol https://console.aws.amazon.com/sns/v3/home Amazon SNS.

  5. Masuk sebagai pemilik langganan ke konsol Amazon SNS Pemilik langganan melakukan konfirmasi.

  6. Pilih topik yang relevan.

  7. Pilih langganan yang relevan di tabel daftar langganan topik. Ini diberi label sebagai “Konfirmasi tertunda”.

  8. Pilih Konfirmasi langganan.

  9. Sebuah modal muncul meminta tautan konfirmasi langganan. Rek atkan tautan konfirmasi langganan.

  10. Pilih Kon firmasi 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.

  11. (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 mewajibkan otentikasi pada permintaan berhenti berlangganan?

Pemilik langganan harus menyetel ben AuthenticateOnUnsubscribe dera ke true pada konfirmasi langganan.

  • AuthenticateOnUnsubscribesecara otomatis diatur ke true saat pemilik antrian membuat langganan.

  • AuthenticateOnUnsubscribetidak dapat disetel ke true saat tautan konfirmasi langganan dinavigasi ke tanpa otentikasi.