Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Menerapkan kebijakan filter langganan di Amazon SNS

Mode fokus
Menerapkan kebijakan filter langganan di 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.

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

  1. Masuk ke konsol Amazon SNS.

  2. Di panel navigasi, pilih Berlangganan.

  3. Pilih langganan dan kemudian pilih Edit.

  4. Pada halaman Edit, perluas bagian Kebijakan filter Langganan.

  5. Pilih antara pemfilteran berbasis atribut atau pemfilteran berbasis muatan.

  6. Di bidang editor JSON, berikan isi JSON dari kebijakan filter Anda.

  7. 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-attributesperintah, 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 dari situs GitHub web.

CLI
AWS CLI

Untuk mengatur atribut langganan

set-subscription-attributesContoh berikut menetapkan RawMessageDelivery 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-name RawMessageDelivery \ --attribute-value true

Perintah ini tidak menghasilkan output.

set-subscription-attributesContoh berikut menetapkan FilterPolicy 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-name FilterPolicy \ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"

Perintah ini tidak menghasilkan output.

set-subscription-attributesContoh berikut menghapus FilterPolicy 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-name FilterPolicy \ --attribute-value "{}"

Perintah ini tidak menghasilkan output.

Java
SDK untuk Java 2.x
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import java.util.ArrayList; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class UseMessageFilterPolicy { public static void main(String[] args) { final String usage = """ Usage: <subscriptionArn> Where: subscriptionArn - The ARN of a subscription. """; if (args.length != 1) { System.out.println(usage); System.exit(1); } String subscriptionArn = args[0]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); usePolicy(snsClient, subscriptionArn); snsClient.close(); } public static void usePolicy(SnsClient snsClient, String subscriptionArn) { try { SNSMessageFilterPolicy fp = new SNSMessageFilterPolicy(); // Add a filter policy attribute with a single value fp.addAttribute("store", "example_corp"); fp.addAttribute("event", "order_placed"); // Add a prefix attribute fp.addAttributePrefix("customer_interests", "bas"); // Add an anything-but attribute fp.addAttributeAnythingBut("customer_interests", "baseball"); // Add a filter policy attribute with a list of values ArrayList<String> attributeValues = new ArrayList<>(); attributeValues.add("rugby"); attributeValues.add("soccer"); attributeValues.add("hockey"); fp.addAttribute("customer_interests", attributeValues); // Add a numeric attribute fp.addAttribute("price_usd", "=", 0); // Add a numeric attribute with a range fp.addAttributeRange("price_usd", ">", 0, "<=", 100); // Apply the filter policy attributes to an Amazon SNS subscription fp.apply(snsClient, subscriptionArn); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } }
Python
SDK untuk Python (Boto3)
catatan

Ada lebih banyak tentang GitHub. Temukan contoh lengkapnya dan pelajari cara pengaturan dan menjalankannya di Repositori Contoh Kode AWS.

class SnsWrapper: """Encapsulates Amazon SNS topic and subscription functions.""" def __init__(self, sns_resource): """ :param sns_resource: A Boto3 Amazon SNS resource. """ self.sns_resource = sns_resource @staticmethod def add_subscription_filter(subscription, attributes): """ Adds a filter policy to a subscription. A filter policy is a key and a list of values that are allowed. When a message is published, it must have an attribute that passes the filter or it will not be sent to the subscription. :param subscription: The subscription the filter policy is attached to. :param attributes: A dictionary of key-value pairs that define the filter. """ try: att_policy = {key: [value] for key, value in attributes.items()} subscription.set_attributes( AttributeName="FilterPolicy", AttributeValue=json.dumps(att_policy) ) logger.info("Added filter to subscription %s.", subscription.arn) except ClientError: logger.exception( "Couldn't add filter to subscription %s.", subscription.arn ) raise
AWS CLI

Untuk mengatur atribut langganan

set-subscription-attributesContoh berikut menetapkan RawMessageDelivery 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-name RawMessageDelivery \ --attribute-value true

Perintah ini tidak menghasilkan output.

set-subscription-attributesContoh berikut menetapkan FilterPolicy 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-name FilterPolicy \ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"

Perintah ini tidak menghasilkan output.

set-subscription-attributesContoh berikut menghapus FilterPolicy 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-name FilterPolicy \ --attribute-value "{}"

Perintah ini tidak menghasilkan output.

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 FilterPolicyproperti AWS::SNS::Subscription sumber daya di Panduan AWS CloudFormation Pengguna dan AWS CloudFormation templat contoh.

  1. Masuk ke konsol AWS CloudFormation tersebut.

  2. Pilih Buat Tumpukan.

  3. Pada halaman Pilihan Templat, pilih Unggah templat ke Amazon S3, pilih templat file, dan pilih Selanjutnya.

  4. Di halaman Tentukan Detail, lakukan hal berikut:

    1. Untuk Nama Tumpukan, ketik MyFilterPolicyStack.

    2. Untuk myHttpEndpoint, ketik titik akhir HTTP untuk berlangganan topik Anda.

      Tip

      Jika Anda tidak memiliki titik akhir HTTP, buat titik akhir HTTP.

  5. Di halaman Opsi, pilih Selanjutnya.

  6. Di halaman Tinjau, pilih Buat.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.