Abonnieren einer SQS Amazon-Warteschlange für ein Amazon-Thema 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.

Abonnieren einer SQS Amazon-Warteschlange für ein Amazon-Thema SNS

Gehen Sie wie folgt vor, um einem SNS Amazon-Thema das Senden von Nachrichten an eine SQS Amazon-Warteschlange zu ermöglichen:

Weitere Informationen zur Einrichtung eines Themas zum Senden von Nachrichten an eine Warteschlange in einem anderen AWS-Konto finden Sie unter SNSAmazon-Nachrichten an eine SQS Amazon-Warteschlange in einem anderen Konto senden.

Eine AWS CloudFormation Vorlage, mit der ein Thema erstellt wird, das Nachrichten an zwei Warteschlangen sendet, finden Sie unterAutomatisieren Sie SNS den Versand von Amazon SQS zu Amazon mit AWS CloudFormation.

Schritt 1: Machen Sie sich mit ARN der Warteschlange und dem Thema vertraut

Wenn Sie eine Warteschlange für Ihr Thema abonnieren, benötigen Sie eine Kopie der ARN für die Warteschlange. Wenn Sie dem Thema die Erlaubnis erteilen, Nachrichten an die Warteschlange zu senden, benötigen Sie ebenfalls eine Kopie der ARN für das Thema.

Um die Warteschlange ARN abzurufen, können Sie die SQS Amazon-Konsole oder die GetQueueAttributesAPIAktion verwenden.

Um die Warteschlange ARN von der SQS Amazon-Konsole abzurufen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die SQS Amazon-Konsole unter https://console.aws.amazon.com/sqs/.

  2. Wählen Sie das Feld für die Warteschlange aus, deren Zugriff ARN Sie abrufen möchten.

  3. Kopieren Sie den ARN Wert aus dem Bereich Details, sodass Sie ihn verwenden können, um das SNS Amazon-Thema zu abonnieren.

Um das Thema ARN aufzurufen, können Sie die SNS Amazon-Konsole, den sns-get-topic-attributes Befehl oder die GetQueueAttributes API Aktion verwenden.

Um das Thema ARN von der SNS Amazon-Konsole abzurufen
  1. Melden Sie sich bei der SNSAmazon-Konsole an.

  2. Wählen Sie im Navigationsbereich das Thema aus, dessen ARN Inhalt Sie abrufen möchten.

  3. Kopieren Sie den ARNWert aus dem Abschnitt Details, sodass Sie ihn verwenden können, um dem SNS Amazon-Thema die Erlaubnis zu erteilen, Nachrichten an die Warteschlange zu senden.

Schritt 2: Erteilen Sie dem SNS Amazon-Thema die Erlaubnis, Nachrichten an die SQS Amazon-Warteschlange zu senden

Damit ein SNS Amazon-Thema Nachrichten an eine Warteschlange senden kann, müssen Sie eine Richtlinie für die Warteschlange festlegen, die es dem SNS Amazon-Thema ermöglicht, die sqs:SendMessage Aktion auszuführen.

Bevor Sie eine Warteschlange für ein Thema abonnieren, benötigen Sie ein Thema und eine Warteschlange. Wenn Sie noch kein Thema bzw. keine Warteschlange erstellt haben, erstellen Sie diese jetzt. Weitere Informationen finden Sie unter Erstellen eines Themas und Erstellen einer Warteschlange im Entwicklerhandbuch für den Amazon-Simple-Warteschlangenservice.

Um eine Richtlinie für eine Warteschlange festzulegen, können Sie die SQS Amazon-Konsole oder die SetQueueAttributesAPIAktion verwenden. Bevor Sie beginnen, stellen Sie sicher, dass Sie über das Thema verfügen, ARN für das Sie das Senden von Nachrichten an die Warteschlange zulassen möchten. Wenn Sie eine Warteschlange für mehrere Themen abonnieren, muss Ihre Richtlinie ein Statement-Element für jedes Thema enthalten.

So legen Sie mithilfe der SQS Amazon-Konsole eine SendMessage Richtlinie für eine Warteschlange fest
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die SQS Amazon-Konsole unter https://console.aws.amazon.com/sqs/.

  2. Aktivieren Sie das Kontrollkästchen für die Warteschlange, deren Richtlinien Sie einrichten möchten. Wählen Sie die Registerkarte Access policy und danach Edit.

  3. In derZugriffsrichtliniedefinieren Sie, wer auf Ihre Warteschlange zugreifen kann.

    • Fügen Sie eine Bedingung hinzu, die die Aktion für das Thema zulässt.

    • Stellen Principal Sie es auf den SNS Amazon-Service ein, wie im Beispiel unten gezeigt.

    • Verwenden Sie den globale Konditionsschlüssel von aws:SourceArn oder den aws:SourceAccount zum Schutz vor dem Szenario Confused Deputy. Um diese Bedingungsschlüssel zu verwenden, setzen Sie den Wert auf den Wert ARN Ihres Themas. Wenn Ihre Warteschlange mehrere Themen abonniert hat, können Sie stattdessen aws:SourceAccount verwenden.

    Die folgende Richtlinie ermöglicht beispielsweise das Senden von Nachrichten MyTopic an MyQueue.

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic" } } } ] }

Schritt 3: Abonnieren Sie die Warteschlange für das SNS Amazon-Thema

Um Nachrichten über ein Thema an eine Warteschlange zu senden, müssen Sie die Warteschlange für das SNS Amazon-Thema abonnieren. Sie spezifizieren die Warteschlange anhand ihrerARN. Um ein Thema zu abonnieren, können Sie die SNS Amazon-Konsole, den sns-subscribe CLI Befehl oder die Subscribe API Aktion verwenden. Bevor Sie beginnen, stellen Sie sicher, dass Sie das ARN für die Warteschlange, die Sie abonnieren möchten, zur Verfügung haben.

  1. Melden Sie sich bei der SNSAmazon-Konsole an.

  2. Wählen Sie im Navigationsbereich Topics (Themen) aus.

  3. Wählen Sie auf der Seite Topics (Themen) ein Thema aus.

  4. Auf der MyTopic Wählen Sie auf der Seite Abonnements die Option Abonnement erstellen aus.

  5. Führen Sie auf der Seite Create subscription (Abonnement erstellen) im Abschnitt Details die folgenden Schritte aus:

    1. Überprüfen Sie das Thema ARN.

    2. Wählen Sie als Protokoll Amazon ausSQS.

    3. Geben Sie für Endpoint den Wert ARN einer SQS Amazon-Warteschlange ein.

    4. Klicken Sie auf Create subscription (Abonnement erstellen).

    Wenn das Abonnement bestätigt wurde, wird die Subscription ID (Abonnement-ID) für Ihr neues Abonnement angezeigt. Wenn der Eigentümer der Warteschlange das Abonnement erstellt, wird das Abonnement automatisch bestätigt und es sollte nahezu umgehend aktiv sein.

    Normalerweise abonnieren Sie Ihre eigene Warteschlange für ein eigenes Thema in Ihrem Konto. Sie können aber auch eine Warteschlange aus einem anderen Konto für Ihr Thema abonnieren. Wenn der Benutzer, der das Abonnement erstellt, nicht der Eigentümer der Warteschlange ist (z. B. wenn ein Benutzer von Konto A eine Warteschlange von Konto B für ein Thema in Konto A erstellt), muss das Abonnement bestätigt werden. Weitere Informationen zum Abonnieren einer Warteschlange von einem anderen Konto und zum Bestätigen des Abonnements finden Sie unter SNSAmazon-Nachrichten an eine SQS Amazon-Warteschlange in einem anderen Konto senden.

Schritt 4: Erteilen von Berechtigungen an Benutzer für die entsprechenden Themen- und Warteschlangenaktionen

Sie sollten AWS Identity and Access Management (IAM) verwenden, damit nur die entsprechenden Benutzer Beiträge zum SNS Amazon-Thema veröffentlichen und Nachrichten aus der Amazon-Warteschlange lesen/löschen können. SQS Weitere Informationen zur Steuerung von Aktionen zu Themen und Warteschlangen für IAM Benutzer finden Sie unter Verwendung identitätsbasierter Richtlinien bei Amazon SNS und Identitäts- und Zugriffsmanagement in Amazon SQS im Amazon Simple Queue Service Developer Guide.

Es gibt zwei Möglichkeiten, den Zugriff auf ein Thema oder eine Warteschlange zu steuern:

  • Fügen Sie einem IAM Benutzer oder einer Gruppe eine Richtlinie hinzu. Die einfachste Möglichkeit, Benutzern Berechtigungen für Themen oder Warteschlangen zu gewähren, besteht darin, eine Gruppe zu erstellen, dieser die entsprechende Richtlinie hinzuzufügen und anschließend der Gruppe Benutzer hinzuzufügen. Es ist wesentlich einfacher, Benutzer einer Gruppe hinzufügen und zu entfernen, um die Richtlinien für einzelne Benutzer im Auge zu behalten.

  • Hinzufügen einer Richtlinie zum Thema oder zur Warteschlange. Wenn Sie einem anderen AWS Konto Berechtigungen für ein Thema oder eine Warteschlange erteilen möchten, können Sie dies nur tun, indem Sie eine Richtlinie hinzufügen, deren Hauptprinzip die Richtlinie ist, für die AWS-Konto Sie Berechtigungen erteilen möchten.

Sie sollten die erste Methode für die meisten Fällen verwenden (Anwenden von Richtlinien für Gruppen und Verwalten von Berechtigungen für Benutzer durch Hinzufügen oder Entfernen der entsprechenden Benutzer zu den Gruppen). Wenn Sie Berechtigungen für einen Benutzer in einem anderen Konto erteilen müssen, sollten Sie die zweite Methode verwenden.

Einem IAM Benutzer oder einer Gruppe eine Richtlinie hinzufügen

Wenn Sie einem IAM Benutzer oder einer Gruppe die folgende Richtlinie hinzufügen würden, würden Sie dem Benutzer oder den Mitgliedern dieser Gruppe die Berechtigung erteilen, die sns:Publish Aktion zu dem Thema durchzuführen MyTopic.

{ "Statement": [ { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Wenn Sie einem IAM Benutzer oder einer Gruppe die folgende Richtlinie hinzufügen würden, würden Sie diesem Benutzer oder Mitgliedern dieser Gruppe die Berechtigung erteilen, die sqs:DeleteMessage Aktionen sqs:ReceiveMessage und in den Warteschlangen MyQueue 1 und MyQueue 2 auszuführen.

{ "Statement": [ { "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:DeleteMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue1", "arn:aws:sqs:us-east-2:123456789012:MyQueue2" ] } ] }

Hinzufügen einer Richtlinie zu einem Thema oder einer Warteschlange

Die folgenden Beispielrichtlinien zeigen, wie weitere Kontoberechtigungen für ein Thema und eine Warteschlange erteilt werden.

Anmerkung

Wenn Sie einer anderen Person AWS-Konto Zugriff auf eine Ressource in Ihrem Konto gewähren, gewähren Sie damit auch IAM Benutzern, die über Administratorrechte (Wildcard-Zugriff) für diese Ressource verfügen. Allen anderen IAM Benutzern in dem anderen Konto wird automatisch der Zugriff auf Ihre Ressource verweigert. Wenn Sie bestimmten IAM Benutzern in diesem Bereich AWS-Konto Zugriff auf Ihre Ressource gewähren möchten, muss das Konto oder ein IAM Benutzer mit Administratorzugriff die Berechtigungen für die Ressource an diese Benutzer delegieren. IAM Weitere Informationen zur kontenübergreifenden Delegierung finden Sie unter Aktivieren des kontoübergreifenden Zugriffs im Nutzerhandbuch. IAM

Wenn Sie die folgende Richtlinie zu einem Thema MyTopic im Konto 123456789012 hinzufügen würden, würden Sie dem Konto 111122223333 die Berechtigung erteilen, die Aktion zu diesem Thema auszuführen. sns:Publish

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic" } ] }

Wenn Sie die folgende Richtlinie zu einer Warteschlange MyQueue im Konto 123456789012 hinzufügen würden, würden Sie dem Konto 111122223333 die Berechtigung erteilen, die Aktionen in dieser Warteschlange auszuführen. sqs:ReceiveMessage sqs:DeleteMessage

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage" ], "Resource": [ "arn:aws:sqs:us-east-2:123456789012:MyQueue" ] } ] }

Schritt 5: Testen der Warteschlangen-Abonnements des Themas

Sie können die Warteschlange-Abonnements für ein Thema testen, indem Sie eine Veröffentlichung für das Thema vornehmen und die Nachricht anzeigen, die das Thema an die Warteschlange sendet.

Um mit der SNS Amazon-Konsole zu einem Thema zu veröffentlichen
  1. Melden Sie sich mit den Anmeldeinformationen des IAM Benutzers AWS-Konto oder an, der berechtigt ist, zu dem Thema zu veröffentlichen, bei der an AWS Management Console und öffnen Sie die SNS Amazon-Konsole unter https://console.aws.amazon.com/sns/.

  2. Wählen Sie im Navigationsbereich das Thema und Publish to Topic (Zu Thema veröffentlichen) aus.

  3. Geben Sie in das Feld Subject (Betreff) einen Betreff ein (z. B. Testing publish to queue). Geben Sie in das Feld Message (Nachricht) Text ein (z. B. Hello world!) und wählen Sie Publish Message (Nachricht veröffentlichen) aus. Die folgende Meldung wird angezeigt: Ihre Nachricht wurde erfolgreich veröffentlicht.

So zeigen Sie die Nachricht zum Thema mit der SQS Amazon-Konsole an
  1. Melden Sie sich mit den Anmeldeinformationen des IAM Benutzers AWS-Konto oder mit der Berechtigung zum Anzeigen von Nachrichten in der Warteschlange an AWS Management Console und öffnen Sie die SQS Amazon-Konsole unter https://console.aws.amazon.com/sqs/.

  2. Wählen Sie eine Warteschlange, die das Thema abonniert hat.

  3. Wählen Sie Send and receive messages (Nachrichten senden und empfangen) und dann Poll for messages (Nachrichten abfragen) aus. Es wird eine Nachricht des Typs Notification (Benachrichtigung) angezeigt.

  4. Wählen Sie in der Spalte Bodydie Option More Details. Das Feld Nachrichtendetails enthält ein JSON Dokument, das den Betreff und die Nachricht enthält, die Sie zu dem Thema veröffentlicht haben. Die Nachricht sieht dem folgenden JSON Dokument ähnlich.

    { "Type" : "Notification", "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "Testing publish to subscribed queues", "Message" : "Hello world!", "Timestamp" : "2012-03-29T05:12:16.901Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEnTrFPa3...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-ab0e-4ec2-88e0-db410a0f2bee" }
  5. Klicken Sie auf Close (Schließen). Sie haben erfolgreich eine Nachricht zu einem Thema veröffentlicht, das Benachrichtigungen an eine Warteschlange sendet.