Cloud & IT Cert Prep · Pelajaran

Penapisan Mesej SQS dan Penyepaduan SNS + SQS

Gunakan dasar penapis langganan SNS supaya setiap pengguna SQS hanya menerima mesej yang diperlukan, sekali gus mengurangkan pemprosesan yang tidak perlu.

Pelajaran 4 daripada 413 langkah

Penapisan Mesej SQS dan Penyepaduan SNS + SQS ialah pelajaran Cloud & IT Cert Prep percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cloud & IT Cert Prep, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Masalah Tanpa Penapisan

Dalam seni bina fan-out tanpa penapisan, setiap pelanggan SQS menerima setiap mesej SNS. Jika topik Anda menerbitkan peristiwa pesanan untuk 10 kategori produk yang berbeza tetapi seorang pelanggan hanya memproses pesanan elektronik, pelanggan itu masih menerima dan perlu membuang mesej makanan serta pakaian. Hal ini membazirkan sumber pengkomputeran, meningkatkan kos dan menambahkan beban yang tidak diperlukan kepada pengguna. Dasar penapis langganan SNS menyelesaikan masalah ini dengan membolehkan SNS sendiri menghalakan mesej hanya kepada pelanggan yang sesuai.

Cara Dasar Penapis SNS Berfungsi

Dasar penapis ialah objek JSON yang digunakan pada langganan SQS atau Lambda. SNS menilai dasar tersebut terhadap atribut mesej sebelum penghantaran. Jika atribut mesej sepadan dengan dasar penapis, mesej akan dihantar; jika tidak, SNS melangkau pelanggan itu secara senyap. Dasar penapis menyokong padanan rentetan, julat angka, padanan awalan dan pengendali exists untuk menyemak kehadiran atau ketiadaan atribut.

# Filter policy: only deliver ELECTRONICS orders from US or EU
{
  'category': ['ELECTRONICS'],
  'region': ['US', 'EU'],
  'amount': [{'numeric': ['>=', 100]}]
}

Skop Dasar Penapis: Atribut Mesej berbanding Isi

Secara lalai, dasar penapis sepadan dengan atribut mesej (metadata). Sejak 2023, SNS turut menyokong penapisan berasaskan muatan (isi) dengan menetapkan skop dasar penapis kepada MessageBody. Ini membolehkan penapisan berasaskan laluan JSON secara langsung pada isi mesej tanpa memerlukan penerbit menambahkan atribut. Penapisan isi lebih fleksibel tetapi memerlukan isi mesej berupa JSON yang sah. Sentiasa sahkan skop yang sepadan dengan format output penerbit Anda.

# Set filter scope to MessageBody
aws sns set-subscription-attributes \
  --subscription-arn 'arn:aws:sns:...' \
  --attribute-name FilterPolicyScope \
  --attribute-value MessageBody

aws sns set-subscription-attributes \
  --subscription-arn 'arn:aws:sns:...' \
  --attribute-name FilterPolicy \
  --attribute-value '{"category": ["ELECTRONICS"]}'

Syarat Penapis Berangka dan Awalan

Dasar penapis menyokong beberapa pengendali padanan selain kesamaan rentetan mudah:

  • Berangka: {"numeric": ["=", 100]}, {"numeric": [">", 50, "<=", 200]}
  • Awalan: {"prefix": "order-"} sepadan dengan mana-mana rentetan yang bermula dengan awalan tersebut
  • Selain daripada: {"anything-but": ["CANCELLED"]} sepadan dengan mana-mana nilai kecuali nilai yang disenaraikan
  • Wujud: {"exists": true} sepadan jika atribut itu wujud; false jika tiada

Menerbitkan Mesej dengan Atribut untuk Penapisan

Untuk membolehkan penapisan berfungsi, penerbit mesti menyertakan atribut mesej semasa menerbitkan kepada SNS. Atribut ialah pasangan kunci-nilai dengan jenis data (String, Number, Binary). Penerbit tidak perlu mengetahui pelanggan yang mempunyai dasar penapis tertentu—penerbit hanya memperkayakan mesej dengan atribut yang menerangkan peristiwa tersebut. SNS mengendalikan penghalaan secara automatik. Hal ini memastikan penerbit terpisah sepenuhnya daripada logik khusus pelanggan.

aws sns publish \
  --topic-arn 'arn:aws:sns:us-east-1:123456789012:OrderTopic' \
  --message '{"orderId": "789", "total": 250.00}' \
  --message-attributes '{
    "category": {"DataType": "String", "StringValue": "ELECTRONICS"},
    "region": {"DataType": "String", "StringValue": "US"},
    "amount": {"DataType": "Number", "StringValue": "250"}
  }'

Fan-Out Berbilang Peringkat: SNS + Beberapa SQS

Topologi fan-out yang canggih boleh mempunyai SNS yang menghala ke baris gilir SQS pada beberapa tahap kekhususan: satu baris gilir menerima semua pesanan (tanpa penapis) untuk tujuan pengauditan, satu lagi hanya menerima pesanan HIGH_VALUE (amount >= 1000) untuk semakan penipuan, dan baris gilir ketiga hanya menerima pesanan ELECTRONICS untuk gudang elektronik. Setiap baris gilir SQS mempunyai pengguna Lambda tersendiri. Corak ini membolehkan setiap peringkat pemprosesan diskalakan secara bebas serta membolehkan pengguna baharu ditambah tanpa menyentuh pengguna sedia ada atau penerbit.

Penghantaran SNS ke SQS Merentas Akaun

SNS boleh menghantar mesej kepada baris gilir SQS dalam akaun AWS yang berbeza. Dasar berasaskan sumber baris gilir SQS mesti membenarkan prinsipal perkhidmatan SNS memanggil sqs:SendMessage daripada ARN topik SNS akaun penerbitan. Ini membolehkan penerbitan peristiwa berpusat (satu akaun menerbitkan, pasukan daripada beberapa akaun melanggan) tanpa berkongsi kelayakan. Fan-out merentas akaun ialah corak lazim dalam persediaan AWS Organizations berbilang akaun.

# SQS queue policy to allow cross-account SNS delivery
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {'Service': 'sns.amazonaws.com'},
    'Action': 'sqs:SendMessage',
    'Resource': 'arn:aws:sqs:us-east-1:CONSUMER_ACCOUNT:MyQueue',
    'Condition': {
      'ArnEquals': {'aws:SourceArn': 'arn:aws:sns:us-east-1:PUBLISHER_ACCOUNT:MyTopic'}
    }
  }]
}

SQS sebagai Penimbal Sebelum Lambda

Apabila jumlah peristiwa meningkat mendadak, seruan SNS-ke-Lambda secara langsung akan menskalakan Lambda serta-merta, dan berpotensi membebankan pangkalan data atau API hiliran. Menambahkan SQS antara SNS dan Lambda mewujudkan penimbal: SNS menghantar mesej kepada SQS, dan Lambda meninjau SQS pada saiz kelompok yang terkawal. Ini membolehkan Lambda memproses mesej pada kadar yang mampan sementara SQS menyerap lonjakan trafik. Kedalaman baris gilir bertindak sebagai mekanisme tekanan belakang—Anda boleh memantaunya dan memberikan amaran apabila nilainya melebihi ambang yang menunjukkan kelewatan pengguna.

Perbandingan Fan-Out Lambda Terus dengan Fan-Out Berpenimbal SQS

SNS → Lambda (terus): kependaman paling rendah, tiada penimbalan, Lambda diskalakan serta-merta. Paling sesuai untuk pemberitahuan masa nyata atau pemberitahuan segera yang memerlukan kependaman bawah satu saat. SNS → SQS → Lambda: menambahkan sokongan DLQ, daya pemprosesan terkawal, percubaan semula dengan had masa keterlihatan dan pemantauan kedalaman baris gilir. Paling sesuai untuk pemprosesan transaksi, pengemaskinian inventori dan apa-apa senario yang memerlukan had hiliran dipatuhi. Untuk soalan peperiksaan, pilih penimbalan SQS apabila ketahanan dan kawalan kadar disebut.

Menguji Dasar Penapisan

Gunakan editor dasar penapisan konsol SNS untuk menguji sama ada mesej sampel akan sepadan dengan dasar penapisan anda sebelum digunakan. Anda juga boleh menggunakan Peti Pasir SNS untuk mensimulasikan penghantaran mesej dan mengesahkan penghalaan. Dalam kod, sahkan dasar penapisan dengan menerbitkan mesej ujian yang mempunyai atribut yang diketahui dan menyemak metrik CloudWatch bagi setiap langganan: metrik NumberOfMessagesFiltered menunjukkan bilangan mesej yang disekat oleh penapis, lalu membantu anda memperhalus dasar tanpa menunggu peristiwa pengeluaran.

Ringkasan Integrasi Hujung ke Hujung

Integrasi SNS + SQS yang lengkap kelihatan seperti berikut: (1) Aplikasi menerbitkan peristiwa ke topik Standard SNS dengan atribut mesej; (2) SNS menilai setiap dasar penapisan langganan dan hanya menghantar mesej yang sepadan ke setiap baris gilir SQS; (3) Lambda meninjau setiap baris gilir SQS dengan saiz kelompok yang dikonfigurasikan dan memproses mesej; (4) Mesej yang gagal sampai ke DLQ selepas maxReceiveCount; (5) Penggera CloudWatch pada kedalaman DLQ memberi amaran kepada pasukan. Corak yang dinyah ganding sepenuhnya dan berdaya tahan ini ialah seni bina SAA-C03 yang menjadi contoh.

Semakan Pantas

Uji pemahaman anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.

Ulang Kaji Pelajaran

Dalam pelajaran ini anda telah mempelajari bahawa: dasar penapisan SNS menghalakan mesej berdasarkan atribut mesej atau kandungan badan pada peringkat SNS, sekali gus menghapuskan pemprosesan yang tidak perlu oleh pengguna hiliran; corak SNS→SQS→Lambda menambahkan penimbalan tahan lama dan kawalan kadar antara penyiaran siaran fan-out dengan pemprosesan; dan penghantaran SQS merentas akaun membolehkan pub/sub berpusat dalam persekitaran berbilang akaun menggunakan dasar sumber baris gilir. Seterusnya kita akan meneroka API REST, HTTP dan WebSocket Amazon API Gateway.

Percuma untuk bermula

Pelajari Cloud & IT Cert Prep dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
150
Pelajaran
600

Soalan Lazim

Adakah pelajaran “Penapisan Mesej SQS dan Penyepaduan SNS + SQS” percuma?

Ya — teks penuh “Penapisan Mesej SQS dan Penyepaduan SNS + SQS” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cloud & IT Cert Prep, tingkat taraf kepada CoddyKit PRO. Kursus Cloud & IT Cert Prep merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penapisan Mesej SQS dan Penyepaduan SNS + SQS”?

Gunakan dasar penapis langganan SNS supaya setiap pengguna SQS hanya menerima mesej yang diperlukan, sekali gus mengurangkan pemprosesan yang tidak perlu. Anda berlatih Cloud & IT Cert Prep menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cloud & IT Cert Prep?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cloud & IT Cert Prep di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Penapisan Mesej SQS dan Penyepaduan SNS + SQS” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Baris Gilir SQS Standard berbanding FIFO
  2. Tamat Masa Keterlihatan, DLQ dan Pengundian Panjang
  3. Topik SNS dan Seni Bina Fan-Out
  4. Penapisan Mesej SQS dan Penyepaduan SNS + SQS
← Kembali ke Cloud & IT Cert Prep