Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemfilteran pesan di Amazon SNS memungkinkan Anda mengirimkan pesan secara selektif ke pelanggan berdasarkan kebijakan filter. Kebijakan ini menentukan kondisi yang harus dipenuhi pesan agar dikirimkan ke langganan. Meskipun pengiriman pesan mentah adalah opsi yang dapat memengaruhi pemrosesan pesan, filter langganan tidak diperlukan untuk berfungsi.
Anda dapat menerapkan kebijakan filter langganan Amazon SNS menggunakan konsol Amazon SNS. Atau, untuk menerapkan kebijakan secara terprogram, Anda dapat menggunakan Amazon SNS API,AWS CLI(), AWS Command Line Interface atau SDK AWS apa pun yang mendukung Amazon SNS. Anda juga bisa menggunakan AWS CloudFormation.
Mengaktifkan Pengiriman Pesan Mentah
Pengiriman pesan mentah memastikan bahwa muatan pesan dikirimkan apa adanya kepada pelanggan tanpa pengkodean atau transformasi tambahan. Ini dapat berguna ketika pelanggan memerlukan format pesan asli untuk diproses. Namun, pengiriman pesan mentah tidak terkait langsung dengan fungsionalitas filter berlangganan.
Menerapkan Filter Berlangganan
Untuk menerapkan filter pesan ke langganan, Anda menentukan kebijakan filter menggunakan sintaks JSON. Kebijakan ini menetapkan kondisi yang harus dipenuhi pesan untuk dikirimkan ke langganan. Filter dapat didasarkan pada atribut pesan, seperti atribut pesan, struktur pesan, atau bahkan konten pesan.
Hubungan antara Pengiriman Pesan Mentah dan Filter Berlangganan
Meskipun mengaktifkan pengiriman pesan mentah dapat memengaruhi cara pesan dikirim dan diproses oleh pelanggan, ini bukan prasyarat untuk menggunakan filter berlangganan. Namun, dalam skenario di mana pelanggan memerlukan format pesan asli tanpa modifikasi apa pun, mengaktifkan pengiriman pesan mentah mungkin bermanfaat bersama filter berlangganan.
Pertimbangan untuk Penyaringan Efektif
Saat menerapkan pemfilteran pesan, pertimbangkan persyaratan spesifik aplikasi dan pelanggan Anda. Tentukan kebijakan filter yang secara akurat sesuai dengan kriteria pengiriman pesan untuk memastikan distribusi pesan yang efisien dan ditargetkan.
penting
AWS Layanan seperti IAM dan Amazon SNS menggunakan model komputasi terdistribusi yang disebut konsistensi akhirnya. Penambahan atau perubahan kebijakan filter langganan memerlukan hingga 15 menit untuk diterapkan sepenuhnya.
AWS Management Console
Masuk ke konsol Amazon SNS
. -
Di panel navigasi, pilih Berlangganan.
-
Pilih langganan dan kemudian pilih Edit.
-
Pada halaman Edit, perluas bagian Kebijakan filter Langganan.
-
Pilih antara pemfilteran berbasis atribut atau pemfilteran berbasis muatan.
-
Di bidang editor JSON, berikan isi JSON dari kebijakan filter Anda.
-
Pilih Simpan perubahan.
Amazon SNS menerapkan kebijakan filter Anda untuk berlangganan.
AWS CLI
Untuk menerapkan kebijakan filter dengan AWS Command Line Interface (AWS CLI), gunakan set-subscription-attributes
perintah, seperti yang ditunjukkan pada contoh berikut. Untuk opsi --attribute-name
, tentukan FilterPolicy
. Untuk--attribute-value
, tentukan kebijakan JSON Anda.
$
aws sns set-subscription-attributes --subscription-arn
arn:aws:sns: ...
--attribute-name FilterPolicy --attribute-value'{"store":["example_corp"],"event":["order_placed"]}'
Untuk memberikan JSON yang valid untuk kebijakan Anda, lampirkan nama atribut dan nilai-nilai dalam tanda kutip ganda. Anda juga harus menyertakan seluruh argumen kebijakan dalam tanda kutip. Untuk menghindari tanda kutip lolos, Anda dapat menggunakan tanda kutip tunggal untuk melampirkan kebijakan dan tanda kutip ganda untuk melampirkan nama dan nilai JSON, seperti yang ditunjukkan pada contoh di atas.
Jika Anda ingin beralih dari pemfilteran pesan berbasis atribut (default) ke pemfilteran pesan berbasis muatan, Anda juga dapat menggunakan perintah tersebut. set-subscription-attributes Untuk opsi --attribute-name
, tentukan FilterPolicyScope
. Untuk --attribute-value
, tentukan MessageBody
.
$
aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicyScope --attribute-value MessageBody
Untuk memverifikasi bahwa kebijakan filter diterapkan, gunakan perintah get-subscription-attributes
. Atribut dalam output terminal harus menunjukkan kebijakan filter Anda untuk kunci FilterPolicy
, seperti yang ditunjukkan dalam contoh berikut:
$
aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ...
{
"Attributes": {
"Endpoint": "endpoint . . .",
"Protocol": "https",
"RawMessageDelivery": "false",
"EffectiveDeliveryPolicy": "delivery policy . . .",
"ConfirmationWasAuthenticated": "true",
"FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}",
"FilterPolicyScope": "MessageAttributes",
"Owner": "111122223333",
"SubscriptionArn": "arn:aws:sns: . . .",
"TopicArn": "arn:aws:sns: . . ."
}
}
AWS SDKs
Contoh kode berikut menunjukkan cara menggunakanSetSubscriptionAttributes
.
penting
Jika Anda menggunakan contoh SDK for Java 2.x, SNSMessageFilterPolicy
kelas tidak tersedia di luar kotak. Untuk petunjuk tentang cara menginstal kelas ini, lihat contoh
- AWS CLI
-
Untuk mengatur atribut langganan
set-subscription-attributes
Contoh berikut menetapkanRawMessageDelivery
atribut ke langganan SQS.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameRawMessageDelivery
\ --attribute-valuetrue
Perintah ini tidak menghasilkan output.
set-subscription-attributes
Contoh berikut menetapkanFilterPolicy
atribut ke langganan SQS.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameFilterPolicy
\ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"Perintah ini tidak menghasilkan output.
set-subscription-attributes
Contoh berikut menghapusFilterPolicy
atribut dari langganan SQS.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameFilterPolicy
\ --attribute-value"{}"
Perintah ini tidak menghasilkan output.
-
Untuk detail API, lihat SetSubscriptionAttributes
di Referensi AWS CLI Perintah.
-
API Amazon SNS
Untuk menerapkan kebijakan filter dengan API Amazon SNS, buat permintaan ke tindakan SetSubscriptionAttributes
. Atur parameter AttributeName
ke FilterPolicy
, dan mengatur parameter AttributeValue
ke kebijakan filter JSON.
Jika Anda ingin beralih dari pemfilteran pesan berbasis atribut (default) ke pemfilteran pesan berbasis muatan, Anda juga dapat menggunakan tindakan tersebut. SetSubscriptionAttributes
Atur AttributeName
parameter keFilterPolicyScope
, dan atur AttributeValue
parameter keMessageBody
.
AWS CloudFormation
Untuk menerapkan kebijakan filter menggunakan AWS CloudFormation, gunakan template JSON atau YAMAL untuk membuat tumpukan. AWS CloudFormation
Untuk informasi selengkapnya, lihat FilterPolicy
properti AWS::SNS::Subscription
sumber daya di Panduan AWS CloudFormation Pengguna dan AWS CloudFormation templat contoh
-
Masuk ke konsol AWS CloudFormation
tersebut. -
Pilih Buat Tumpukan.
-
Pada halaman Pilihan Templat, pilih Unggah templat ke Amazon S3, pilih templat file, dan pilih Selanjutnya.
-
Di halaman Tentukan Detail, lakukan hal berikut:
-
Untuk Nama Tumpukan, ketik
MyFilterPolicyStack
. -
Untuk myHttpEndpoint, ketik titik akhir HTTP untuk berlangganan topik Anda.
Tip
Jika Anda tidak memiliki titik akhir HTTP, buat titik akhir HTTP.
-
-
Di halaman Opsi, pilih Selanjutnya.
-
Di halaman Tinjau, pilih Buat.