Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Anwenden einer Abonnementfilterrichtlinie in Amazon SNS

Fokusmodus
Anwenden einer Abonnementfilterrichtlinie in Amazon SNS - Amazon Simple Notification Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die Nachrichtenfilterung in Amazon SNS ermöglicht es Ihnen, Nachrichten anhand von Filterrichtlinien selektiv an Abonnenten zu senden. Diese Richtlinien definieren Bedingungen, die Nachrichten erfüllen müssen, um im Rahmen eines Abonnements zugestellt zu werden. Die Zustellung von Rohnachrichten ist zwar eine Option, die sich auf die Nachrichtenverarbeitung auswirken kann, sie ist jedoch nicht erforderlich, damit Abonnementfilter funktionieren.

Sie können eine Filterrichtlinie unter Verwendung der Amazon SNS-Konsole auf ein Amazon SNS-Abonnement anwenden. Um Richtlinien programmgesteuert anzuwenden, können Sie auch die Amazon SNS-API, das AWS Command Line Interface (AWS CLI) oder ein beliebiges AWS SDK verwenden, das Amazon SNS unterstützt. Sie können auch verwenden. AWS CloudFormation

Die Zustellung von Rohnachrichten aktivieren

Die Zustellung von Rohnachrichten stellt sicher, dass Nachrichtennutzdaten den Abonnenten unverändert und ohne zusätzliche Kodierung oder Transformation zugestellt werden. Dies kann nützlich sein, wenn Abonnenten das ursprüngliche Nachrichtenformat für die Verarbeitung benötigen. Die Zustellung von Rohnachrichten steht jedoch nicht in direktem Zusammenhang mit der Funktionalität von Abonnementfiltern.

Abonnementfilter anwenden

Um Nachrichtenfilter auf ein Abonnement anzuwenden, definieren Sie eine Filterrichtlinie mithilfe der JSON-Syntax. Diese Richtlinie legt die Bedingungen fest, die eine Nachricht erfüllen muss, um im Abonnement zugestellt zu werden. Filter können auf Nachrichtenattributen wie Nachrichtenattributen, Nachrichtenstruktur oder sogar Nachrichteninhalten basieren.

Beziehung zwischen Rohnachrichtenzustellung und Abonnementfiltern

Die Aktivierung der Zustellung von Rohnachrichten kann sich zwar darauf auswirken, wie Nachrichten von Abonnenten zugestellt und verarbeitet werden, ist jedoch keine Voraussetzung für die Verwendung von Abonnementfiltern. In Szenarien, in denen Abonnenten das ursprüngliche Nachrichtenformat ohne Änderungen benötigen, kann die Aktivierung der Rohnachrichtenzustellung jedoch zusammen mit Abonnementfiltern von Vorteil sein.

Überlegungen zu einer effektiven Filterung

Berücksichtigen Sie bei der Implementierung der Nachrichtenfilterung die spezifischen Anforderungen Ihrer Anwendung und Ihrer Abonnenten. Definieren Sie Filterrichtlinien, die den Kriterien für die Nachrichtenzustellung genau entsprechen, um eine effiziente und gezielte Nachrichtenverteilung zu gewährleisten.

Wichtig

AWS Dienste wie IAM und Amazon SNS verwenden ein verteiltes Rechenmodell, das als Eventual Consistency bezeichnet wird. Hinzufügungen oder Änderungen einer Abonnementfilterrichtlinie dauern bis zu 15 Minuten, bis sie vollständig wirksam werden.

AWS Management Console

  1. Melden Sie sich bei der Amazon SNS-Konsole an.

  2. Wählen Sie im Navigationsbereich Subscriptions (Abonnements) aus.

  3. Wählen Sie ein Abonnement und dann Edit (Bearbeiten) aus.

  4. Erweitern Sie auf der Seite Edit (Bearbeiten) den Abschnitt Subscription filter policy (Abonnementfilterrichtlinie).

  5. Wählen Sie zwischen attributbasierter Filterung oder nutzlastbasierter Filterung aus.

  6. Geben Sie im Feld JSON editor (JSON-Editor) den JSON-Text Ihrer Filterrichtlinie an.

  7. Wählen Sie Änderungen speichern.

    Amazon SNS wendet Ihre Filterrichtlinie auf das Abonnement an.

AWS CLI

Um eine Filterrichtlinie mit dem AWS Command Line Interface (AWS CLI) anzuwenden, verwenden Sie den set-subscription-attributesBefehl, wie im folgenden Beispiel gezeigt. Wählen Sie für die Option --attribute-name den Wert FilterPolicy. Geben Sie für --attribute-value Ihre JSON-Richtlinie an.

$ aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicy --attribute-value '{"store":["example_corp"],"event":["order_placed"]}'

Um gültiges JSON für Ihre Richtlinie anzugeben, schließen Sie die Attributnamen und Werte in doppelte Anführungszeichen ein. Sie müssen auch das gesamte Richtlinienargument in Anführungszeichen einschließen. Um das Maskieren von Anführungszeichen zu vermeiden, können Sie die Richtlinie in einfache Anführungszeichen und die JSON-Namen und -Werte in doppelte Anführungszeichen setzen, wie im folgenden Beispiel gezeigt.

Wenn Sie von der attributbasierten (Standard) zur nutzlastbasierten Nachrichtenfilterung wechseln möchten, können Sie den Befehl ebenfalls verwenden. set-subscription-attributes Wählen Sie für die Option --attribute-name den Wert FilterPolicyScope. Legen Sie für --attribute-value die Option MessageBody fest.

$ aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicyScope --attribute-value MessageBody

Um sicherzustellen, dass Ihre Filterrichtlinie angewendet wurde, verwenden Sie den Befehl get-subscription-attributes. Die Attribute in der Terminal-Ausgabe sollten Ihre Filterrichtlinie für den FilterPolicy-Schlüssel zeigen, wie im folgenden Beispiel:

$ 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

Die folgenden Code-Beispiele zeigen, wie SetSubscriptionAttributes verwendet wird.

Wichtig

Wenn Sie das Beispiel SDK for Java 2.x verwenden, ist die Klasse SNSMessageFilterPolicy nicht sofort verfügbar. Anweisungen zur Installation dieser Klasse finden Sie im Beispiel auf der GitHub Website.

CLI
AWS CLI

So legen Sie Abonnementattribute fest

Im folgenden set-subscription-attributes-Beispiel wird das RawMessageDelivery-Attribut auf ein SQS-Abonnement festgelegt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Im folgenden set-subscription-attributes-Beispiel wird ein FilterPolicy-Attribut auf ein SQS-Abonnement festgelegt.

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\"] }"

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Im folgenden set-subscription-attributes-Beispiel wird das FilterPolicy-Attribut von einem SQS-Abonnement entfernt.

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 "{}"

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Java
SDK für Java 2.x
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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 für Python (Boto3)
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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

So legen Sie Abonnementattribute fest

Im folgenden set-subscription-attributes-Beispiel wird das RawMessageDelivery-Attribut auf ein SQS-Abonnement festgelegt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Im folgenden set-subscription-attributes-Beispiel wird ein FilterPolicy-Attribut auf ein SQS-Abonnement festgelegt.

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\"] }"

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Im folgenden set-subscription-attributes-Beispiel wird das FilterPolicy-Attribut von einem SQS-Abonnement entfernt.

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 "{}"

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Amazon SNS-API

Um eine Filterrichtlinie mit der Amazon SNS API anzuwenden, stellen Sie eine Anfrage an die SetSubscriptionAttributes-Aktion. Setzen Sie den Parameter AttributeName auf FilterPolicy, und den Parameter AttributeValue auf das JSON Ihrer Filterrichtlinie.

Wenn Sie von der attributbasierten (Standard) zur nutzlastbasierten Nachrichtenfilterung wechseln möchten, können Sie auch die Aktion SetSubscriptionAttributes verwenden. Legen Sie den AttributeName-Parameter auf FilterPolicyScope und den AttributeValue-Parameter auf MessageBody fest.

AWS CloudFormation

Um eine Filterrichtlinie anzuwenden AWS CloudFormation, verwenden Sie eine JSON- oder YAML-Vorlage, um einen AWS CloudFormation Stack zu erstellen. Weitere Informationen finden Sie unter der FilterPolicyEigenschaft der AWS::SNS::Subscription Ressource im AWS CloudFormation Benutzerhandbuch und in der AWS CloudFormation Beispielvorlage.

  1. Melden Sie sich an der AWS CloudFormation -Konsole an.

  2. Wählen Sie Stapel erstellen aus.

  3. Wählen Sie auf der Seite Select Template (Vorlage auswählen) die Option Upload a template to Amazon S3 (Eine Vorlage zu Amazon S3 hochladen) aus. Wählen Sie dann Ihre Datei und Next (Weiter) aus.

  4. Führen Sie auf der Seite Specify DB Details (Festlegen von DB-Detail) die folgenden Schritte aus:

    1. Geben Sie für Stack name (Stack-Name) MyFilterPolicyStack ein.

    2. Geben Sie zum myHttpEndpointBeispiel den HTTP-Endpunkt ein, um Ihr Thema zu abonnieren.

      Tipp

      Wenn Sie nicht über einen HTTP-Endpunkt verfügen, erstellen Sie einen.

  5. Wählen Sie auf der Seite Optionen Weiter aus.

  6. Klicken Sie auf der Seite Review auf Create.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.