Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie konfiguriere ich meinen kontoübergreifenden Amazon-SQS-Endpunkt für das Amazon-SNS-Thema?
Ich möchte wissen, wie ich eine kontoübergreifende Amazon-SQS-Warteschlange so konfiguriere, dass sie ein Amazon-SNS-Thema abonniert und Benachrichtigungen in verschiedenen AWS-Konten erhält.
Kurzbeschreibung
Erstelle ein Abonnement innerhalb des Amazon Simple Notification Service (Amazon SNS)-Themas als Themen-Besitzer. Oder erstelle das Abonnement innerhalb der Amazon Simple Queue Service (Amazon SQS)-Warteschlange als Besitzer der Warteschlange. Damit das Abonnement erstellt werden kann, müssen beide Methoden über die entsprechenden Berechtigungen verfügen.
Lösung
Wichtig: Um ein Abonnement als Besitzer der Warteschlange zu erstellen, vergewissere dich zuerst, dass deine Zugriffsrichtlinie für SNS-Themen in Konto B über die entsprechenden Berechtigungen verfügt. Diese Berechtigungen ermöglichen es der SQS-Warteschlange in Konto A, das SNS-Thema zu abonnieren. Vergewissere dich, dass deine SQS-Warteschlangenzugriffsrichtlinie in Konto A über die entsprechenden Berechtigungen verfügt, bevor du als Besitzer des Themas ein Abonnement erstellst. Konto A muss über Berechtigungen verfügen, die es dem SNS-Thema ermöglichen, die URL zur Abonnementbestätigung zu senden.
Als Besitzer der Warteschlange abonnieren
Führe die folgenden Schritte aus, um eine Warteschlange als Besitzer der Warteschlange zu abonnieren.
SNS-Zugriffsrichtlinie in Konto B ändern
Führe die folgenden Schritte aus:
- Melde dich in Konto B bei der Amazon-SNS-Konsole an.
- Wechsle zur entsprechenden AWS-Region.
- Wähle Themen und dann dein SNS-Thema aus.
- Wähle Bearbeiten aus.
- Erweitere den Abschnitt Zugriffsrichtlinie.
- Kopiere die folgende Zugriffsrichtlinie und füge sie in den Abschnitt JSON-Editor ein:
Hinweis: Ersetze das AWS-Konto und den ARN des SNS-Themas durch deine Werte.{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "sns:Subscribe", "Resource": "arn:aws:sns:Region:account-id:topic-name" } ] } - Wähle Speichern aus.
Führe als Besitzer der Warteschlange die folgenden Schritte durch, um für deine SQS-Warteschlange in Konto A ein Abonnement für das SNS-Thema in Konto B zu erstellen:
- Melde dich in Konto A bei der Amazon-SQS-Konsole an.
- Wechsle zur entsprechenden Region.
- Wähle Warteschlangen und dann die SQS-Warteschlange aus.
- Wähle im Abschnitt SNS-Abonnements Amazon SNS-Thema abonnieren aus.
- Wähle unter Specify an Amazon SNS topic available for this queue (Amazon SNS-Thema angeben, das für diese Warteschlange verfügbar ist) das Drop-down-Menü aus. Wähle danach Enter Amazon SNS topic ARN (Amazon-SNS-Thema-ARN eingeben) aus.
- Gib im Textfeld An Amazon SNS topic that can send notifications to an Amazon SQS queue (Ein Amazon-SNS-Thema, das Benachrichtigungen an eine Amazon-SQS-Warteschlange senden kann), den SNS-Thema-ARN ein.
- Wähle Speichern aus.
- Melde dich in Konto B bei der Amazon-SNS-Konsole an.
- Wähle Themen und dann dein SNS-Thema aus.
- Du kannst im Abschnitt Abonnements feststellen, ob das Abonnement für dein SNS-Thema in Konto B bestätigt wurde.
Hinweis: Nachdem du das Abonnement erstellt hast, wird der SQS-Warteschlangenzugriffsrichtlinie eine Anweisung hinzugefügt. Diese Richtlinie gestattet es dem SNS-Thema, Nachrichten an deine Warteschlange zu senden. Die Richtlinie sieht etwa wie folgt aus:
{ "Sid": "topic-subscription-arn:aws:sns:Region:account-id:topic-name", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name" } } }
Als Besitzer des Themas abonnieren
Führe die folgenden Schritte aus, um eine Warteschlange als Besitzer des Themas zu abonnieren.
SQS-Warteschlange in Konto A ändern
Führe die folgenden Schritte aus:
- Melde dich in Konto A bei der Amazon-SQS-Konsole an.
- Wechsle zur entsprechenden Region.
- Wähle Warteschlangen und dann die SQS-Warteschlange aus.
- Wähle Bearbeiten aus.
- Erweitere den Abschnitt Zugriffsrichtlinie.
- Kopiere die folgende Zugriffsrichtlinie und füge sie in den JSON-Editor ein:
Hinweis: Ersetze den ARN der SQS-Warteschlange und den SNS-Thema-ARN durch deine Werte.{ "Sid": "Allow_SNS_topic_in_Account_B_to_Send_Message", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:SendMessage", "Resource": "arn:aws:sqs:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:Region:account-id:topic-name" } } }
Führe als Besitzer des Themas die folgenden Schritte aus, um ein Abonnement für deine SQS-Warteschlange in einem anderen Konto zu erstellen:
- Melde dich in Konto B bei der Amazon-SNS-Konsole an.
- Wechsle zur entsprechenden Region.
- Wähle Themen und dann dein SNS-Thema aus.
- Wähle unter Abonnements die Option Abonnement erstellen aus.
- Wähle die Drop-down-Liste Protokoll und dann Amazon SQS aus.
- Wähle danach Abonnement erstellen aus.
- Um das Abonnement zu bestätigen, melde dich in Konto A bei der Amazon-SQS-Konsole an.
- Wähle Warteschlangen und danach die abonnierte SQS-Warteschlange aus.
- Wähle Senden und Empfangen von Nachrichten aus.
- Wähle Abruf von Nachrichten aus. Eine Nachricht von Amazon SNS wird im Abschnitt Nachrichten angezeigt.
- Wähle die Nachrichten-ID aus. Kopiere unter SubscribeURL die URL in Anführungszeichen.
- Füge diesen URL-Link in den Webbrowser ein und betätige die Eingabetaste, um ConfirmSubscriptionResult zusammen mit SubscriptionARN anzuzeigen.
- Melde dich in Konto B bei der Amazon-SNS-Konsole an.
- Wähle Themen und dann dein SNS-Thema aus.
- Um dich zu vergewissern, ob das Abonnement bestätigt wurde, überprüfe den Abonnementstatus unter Abonnements. Der Abonnementstatus ändert sich von Ausstehende Bestätigung zu Bestätigt.
Hinweis: Da das SNS-Konto der Besitzer des Abonnements ist, wird das Abonnement in der SQS-Konsole nicht aufgeführt.
Tipps zur Problembehebung
Um Probleme mit Warteschlangen zu beheben, führe je nach Fall die folgenden Schritte durch.
Meine SQS-Warteschlange ist verschlüsselt
SQS-Warteschlangen, die mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt sind, können den Zugriff zwischen Konten einschränken. Wenn du keinen Schlüssel für deine verschlüsselte Warteschlange definierst, verwendet die Warteschlange den AWS-KMS-Schlüssel (SSE-KMS) als Standardschlüssel. Dieser Schlüssel ermöglicht nur Prinzipalen desselben Kontos den Zugriff. Weitere Informationen siehe Verschlüsselung im Ruhezustand in Amazon SQS.
Erstelle einen vom Kunden verwalteten AWS-KMS-Schlüssel, um auf verschlüsselte Warteschlangen zuzugreifen, die SSE-KMS verwenden. Füge danach der Schlüsselrichtlinie Berechtigungen hinzu, die es dem SNS-Service ermöglichen, die AWS-KMS-API-Aufrufe durchzuführen.
Damit der SNS-Service die API-Methoden GenerateDataKey und Decrypt verwenden kann, füge der vom Kunden verwalteten Schlüsselrichtlinie die folgende Anweisung hinzu:
{ "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }
Weitere Informationen findest du unter Konfiguration der serverseitigen Verschlüsselung (SSE) für eine Warteschlange (Konsole).
Mein Abonnement wird in der SNS-Konsole immer noch als ausstehend angezeigt, wenn ich mein Abonnement in der Amazon-SNS-Konsole erstelle
Führe die folgenden Schritte aus, um diesen Fehler zu beheben:
-
Lösche dein Abonnement. Beginne danach mit Schritt 13 der oben angegebenen Schritte.
-
Wenn du die SQS-Warteschlange mit dem AWS Command Line Interface (AWS CLI) abfragen möchtest, führe den folgenden Befehl aus, um die SubscriptionURL abzurufen:
aws sqs receive-message --queue-url https**:**//sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von AWS CLI-Fehlern. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.
-
Kopiere diese URL und füge sie in den Browser ein, um das Abonnement zu bestätigen. Achte darauf, die Warteschlangen-URL durch deine eigene zu ersetzen.
Wenn ich meine SNS-Themenzugriffsrichtlinie kopiere und einfüge, wird die Fehlermeldung „Couldn't set topic access policy“ angezeigt
Wenn ich die SNS-Themenzugriffsrichtlinie kopiere und einfüge, wird die folgende Fehlermeldung angezeigt:
„Couldn't set topic access policy.Error code: InvalidParameter - Error message: An error occurred while setting the attribute access policy. Invalid parameter: Policy Error: null.“
Führe die folgenden Schritte aus, um diesen Fehler zu beheben:
- Um sicherzustellen, dass die Syntax der Richtlinie korrekt ist, kopiere die Zugriffsrichtlinie und füge sie auf der Website des JSON-Validator-Tools ein.
- Überprüfe die Zugriffsrichtlinie, um sicherzustellen, dass keine doppelten Anweisungen vorliegen. Vergewissere dich, dass hinter der ersten Anweisungs-ID ein Komma steht.
Meine Abonnement-ID wird in der Amazon-SNS-Konsole als „Gelöscht“ angezeigt
Bei der kontoübergreifenden Integration von SNS und SQS richtet sich der Besitzer des Abonnements danach, von wo aus das Abonnement erstellt wurde.
Wenn das Abonnement im SQS-Konto erstellt wird, ist SQS der Besitzer des Abonnements. Wenn das Abonnement im SNS-Konto erstellt wird, ist SNS der Besitzer des Abonnements.
Wenn du die Unsubscribe API von einem Konto aus aufrufst, das nicht der Besitzer des Abonnements ist, wechselt das Abonnement in den Status Gelöscht. Oder wenn du versuchst, das Abonnement von der Konsole zu löschen, wechselt das Abonnement in den Status Gelöscht. Das SNS-Themenabonnement hat zwar den Status Gelöscht, aber das Konto, dem das Abonnement gehört, kann denselben Endpunkt nicht erneut für das Thema abonnieren.
Nach 48 Stunden löscht Amazon SNS das gelöschte Abonnement. Das Konto, das der Besitzer des Abonnements ist, kann denselben Endpunkt erneut für das Thema abonnieren.
Um vor Ablauf der 48 Stunden das Abonnement zu erneuern, musst du die Subscribe API von dem AWS-Konto aus aufrufen, das der Besitzer des SNS-Themas ist, um das Abonnement neu zu erstellen.
Bewährte Methoden
Authentifiziere das SNS-Abonnement für deine SQS-Warteschlange. In dieser Konfiguration können nur der Besitzer des Themas und der Besitzer des Abonnements das SNS-Thema-Abonnement durch die SQS-Warteschlange beenden.
Ähnliche Informationen
Senden von Amazon SNS-Nachrichten an eine Amazon SQS-Warteschlange in einem anderen Konto
- Themen
- Application Integration
- Sprache
- Deutsch
Ähnliche Videos

