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
Melden Sie sich bei der Amazon SNS-Konsole
an. -
Wählen Sie im Navigationsbereich Subscriptions (Abonnements) aus.
-
Wählen Sie ein Abonnement und dann Edit (Bearbeiten) aus.
-
Erweitern Sie auf der Seite Edit (Bearbeiten) den Abschnitt Subscription filter policy (Abonnementfilterrichtlinie).
-
Wählen Sie zwischen attributbasierter Filterung oder nutzlastbasierter Filterung aus.
-
Geben Sie im Feld JSON editor (JSON-Editor) den JSON-Text Ihrer Filterrichtlinie an.
-
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-attributes
Befehl, 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
- AWS CLI
-
So legen Sie Abonnementattribute fest
Im folgenden
set-subscription-attributes
-Beispiel wird dasRawMessageDelivery
-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-nameRawMessageDelivery
\ --attribute-valuetrue
Mit diesem Befehl wird keine Ausgabe zurückgegeben.
Im folgenden
set-subscription-attributes
-Beispiel wird einFilterPolicy
-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-nameFilterPolicy
\ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"Mit diesem Befehl wird keine Ausgabe zurückgegeben.
Im folgenden
set-subscription-attributes
-Beispiel wird dasFilterPolicy
-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-nameFilterPolicy
\ --attribute-value"{}"
Mit diesem Befehl wird keine Ausgabe zurückgegeben.
-
Einzelheiten zur API finden Sie SetSubscriptionAttributes
in der AWS CLI Befehlsreferenz.
-
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 FilterPolicy
Eigenschaft der AWS::SNS::Subscription
Ressource im AWS CloudFormation Benutzerhandbuch und in der AWS CloudFormation Beispielvorlage
-
Melden Sie sich an der AWS CloudFormation -Konsole
an. -
Wählen Sie Stapel erstellen aus.
-
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.
-
Führen Sie auf der Seite Specify DB Details (Festlegen von DB-Detail) die folgenden Schritte aus:
-
Geben Sie für Stack name (Stack-Name)
MyFilterPolicyStack
ein. -
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.
-
-
Wählen Sie auf der Seite Optionen Weiter aus.
-
Klicken Sie auf der Seite Review auf Create.