Wie richte ich ein kontoübergreifendes AWS-Lambda-Abonnement mit einem SNS-Thema ein?
Ich möchte meine AWS-Lambda-Funktion für ein Amazon Simple Notification Service (Amazon SNS)-Thema in einem anderen Konto abonnieren.
Kurzbeschreibung
Füge mithilfe der Amazon/--Konsole ein kontoübergreifendes AWS-Lambda-Abonnement zu einem Amazon-SNS-Thema hinzu.
Lösung
Voraussetzung
Bevor du beginnst, stelle Folgendes sicher:
- Die Lambda-Funktionsressourcenrichtlinie ermöglicht es SNS, die Funktion aufzurufen.
- Die SNS-Themenzugriffsrichtlinie ermöglicht es Lambda, das Thema zu abonnieren.
Hinweis: Das SNS-Thema befindet sich in Konto A, und die Lambda-Funktion befindet sich in Konto B.
Abonnieren einer kontoübergreifenden Lambda-Funktion
Es gibt zwei Möglichkeiten, eine kontoübergreifende Lambda-Funktion für ein SNS-Thema zu abonnieren:
- Hinzufügen eines SNS-Auslösers von der Lambda-Konsole in Konto B
- Hinzufügen des Lambda-Abonnements über die SNS-Konsole in Konto B (das Konto mit der Lambda-Funktion)
Ressourcen erstellen
Erstelle ein SNS-Thema in Konto A:
- Öffne die Amazon-SNS-Konsole und wähle dann im linken Bereich Themen aus.
- Wähle Thema erstellen, wähle Thementyp aus und gib dann den Themennamen ein.
- Scrolle nach unten und wähle Thema erstellen.
Erlaube Konto B, eine Abonnement-Aktion zum Thema auszuführen.
- Bearbeite die Zugriffsrichtlinie zum Thema, um Konto B die sns:Subscribe-Berechtigung zu erteilen.
- Füge die unten abgebildete Richtlinienanweisung hinzu und wähle Speichern:
{ "Sid": "Allow-AccountB-To-Subscribe", "Effect": "Allow", "Principal": { "AWS": "" }, "Action": "sns:Subscribe", "Resource": "" }
Hinweis: Ersetze Prinzipal <AccountB> durch deine Kontonummer, die die Lambda-Funktion hat. Ersetze das Feld Ressource <SNSTopicARN> durch Amazon-Ressourcennamen (ARN) deines SNS-Themas.
Erstelle eine Lambda-Funktion in Konto B:
- Öffne die Seite Funktion auf der AWS-Lambda-Konsole. Wähle dann Funktion erstellen.
- Gib einen Funktionsnamen ein.
- Wähle für Ausführungsrolle die Option Create a new role with basic Lambda permissions (Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen) aus. Lambda erstellt eine Ausführungsrolle, die der Funktion die Berechtigung erteilt, Protokolle auf Amazon CloudWatch hochzuladen.
- Scrolle nach unten und wähle die Schaltfläche Funktion erstellen.
Abonnieren einer Lambda-Funktion durch Hinzufügen eines Triggers auf der Lambda-Konsole (Option 1)
- Öffne die Seite Funktion in der AWS-Lambda-Konsole und wähle die Funktion aus, die du zuvor erstellt hast.
- Wähle die Schaltfläche Auslöser hinzufügen.
- Wähle auf der Auslöser-Konfigurationsseite SNS aus der Dropdown-Liste aus.
- Füge in das Feld SNS-Thema das Thema ARN ein.
- Wähle die Schaltfläche Hinzufügen.
Das SNS-Thema in Konto A kann jetzt die Lambda-Funktion in Konto B aufrufen.
Die Konfiguration testen
Führe den Test durch, indem du eine Nachricht zum SNS-Thema veröffentlichst.
Hinweis: Wenn du den Auslöser über die Lambda-Konsole hinzufügst, fügt Lambda automatisch die erforderlichen Berechtigungen hinzu, damit Amazon SNS die Lambda-Funktion von diesem Auslöser aus aufrufen kann.
Abonnieren einer Lambda-Funktion durch Hinzufügen eines Abonnements über die SNS-Konsole (Option 2)
Für diese Option musst du dem SNS-Service-Prinzipal ausdrücklich die Berechtigung erteilen, die Aktion lambda:InvokeFunction auszuführen.
Erlaube dem SNS-Service-Prinzipal, die Lambda-Funktion aufzurufen.
Wähle auf der Funktionsseite der Lambda-Konsole die Funktion aus, die du zuvor erstellt hast. Gehe danach wie folgt vor:
- Wähle die Registerkarte Konfiguration und anschließend Berechtigungen aus.
- Scrolle nach unten zum Abschnitt Ressourcenbasierte Richtlinie. Wähle dann die Schaltfläche Berechtigungen hinzufügen.
- Wähle AWS-Service und dann SNS aus der Dropdown-Liste aus. Fülle dann die Felder aus:
Setze Anweisungs-ID auf AllowSNSToInvokeFunction
Füge für Quell-ARN den ARN des zuvor erstellten SNS-Themas ein
Wähle für Aktion lambda:InvokeFunction. - Wähle Speichern aus.
- Erstelle das SNS-Abonnement für Lambda.
Öffne von Konto B aus die Amazon-SNS-Konsole.
- Wähle im linken Bereich Abonnements aus.
- Wähle die Schaltfläche Abonnement erstellen.
- Füge den ARN des SNS-Themas von Konto A in das Feld Themen-ARN ein.
- Wähle AWS Lambda aus der Dropdown-Liste Protokoll aus.
- Füge den ARN der Lambda-Funktion in das Feld Endpunkt ein
- Scrolle nach unten und wähle die Schaltfläche Abonnement erstellen.
Hinweis: Stelle sicher, dass du die Lambda-Funktion für das SNS-Thema über das AWS-Konto abonnierst, das über die Lambda-Funktion verfügt (Konto B). Wenn du versuchst, das Abonnement von dem Konto aus zu erstellen, das das SNS-Thema hat (Konto A), erhältst du die folgende Fehlermeldung:
Error code: AccessDeniedException - Error message: User: arn:aws:sts::XXXXXXX:XXXXXXX/XXXXX/XXXXXX is not authorized to perform: lambda:AddPermission on resource: arn:aws:lambda:region:XXXXXXX:function:XXXXXXX
Ähnliche Informationen
Verwendung von AWS Lambda mit Amazon Simple Notification Service
- Themen
- Application Integration
- Sprache
- Deutsch
Ähnliche Videos

