View a markdown version of this page

Gewähren des Lambda-Funktionszugriffs für andere Konten - AWS Lambda

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.

Gewähren des Lambda-Funktionszugriffs für andere Konten

Um eine Funktion mit einer anderen zu teilen AWS-Konto, fügen Sie der ressourcenbasierten Richtlinie der Funktion eine kontoübergreifende Berechtigungsanweisung hinzu. Wir empfehlen die Verwendung, um eine vollständige JSON-Richtlinie put-resource-policy zu erstellen. Mit put-resource-policy können Sie mehrere Prinzipale angeben, Bedingungen hinzufügen und Ablehnungsanweisungen erstellen. Sie können es auch add-permission für einfache Anwendungsfälle verwenden.

Wichtig

Durch Verwenden werden alle vorhandenen ressourcenbasierten Richtlinien für die Ressource put-resource-policy ersetzt. Wenn für die Ressource bereits Berechtigungen mit definiert sindadd-permission, put-resource-policy werden diese überschrieben. Wird verwendetget-resource-policy, um die vorhandene Richtlinie abzurufen, bevor Änderungen vorgenommen werden.

Verwendung einer vollständigen JSON-Richtlinie (empfohlen)

Die folgende Beispielrichtlinie gewährt zwei AWS-Konten Berechtigungen zum Aufrufen einer Funktion, wobei eine auf eine bestimmte IAM-Rolle beschränkt ist:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-invoke", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:role/cross-account-role" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function" } ] }

Speichern Sie die Richtlinie in einer Datei mit dem Namen policy.json und wenden Sie sie an. Sie resource-arn können eine Funktion, Version oder einen Alias angeben:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json

Sie können auch den kontoübergreifenden Zugriff auf bestimmte Versionen mithilfe eines Alias einschränken. Bei den folgenden Policy-Zuweisungen wird der Zugriff nur über den prod Alias gewährt:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-account-prod-alias", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function:prod" } ] }

Speichern Sie diese Richtlinie in einer Datei mit dem Namen alias-policy.json und wenden Sie sie auf den Alias an:

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function:prod \ --policy file://alias-policy.json

Die ressourcenbasierte Richtlinie erteilt dem anderen Konto die Berechtigung für den Zugriff auf die Funktion, erlaubt den Benutzern in diesem Konto jedoch nicht, ihre Berechtigungen zu überschreiten. Benutzer in dem anderen Konto müssen über die entsprechenden Benutzerberechtigungen verfügen, um die Lambda-API verwenden zu können.

Sie können kontoübergreifenden Zugriff für die meisten API-Aktionen erteilen, die für eine vorhandene Funktion ausgeführt werden. Beispielsweise könnten Sie Zugriff auf lambda:ListAliases gewähren, damit ein Konto eine Liste der Aliasse abrufen kann, oder lambda:GetFunction, damit es Ihren Funktionscode herunterladen kann.

Um anderen Konten Berechtigungen für mehrere Funktionen oder für Aktionen zu erteilen, die nicht für eine Funktion ausgeführt werden, empfehlen wir die Verwendung von IAM-Rollen.

Verwenden Sie die Berechtigung „Hinzufügen“

Für einfache Anwendungsfälle können Sie es verwenden, add-permission um einzelne Anweisungen hinzuzufügen. Im folgenden Beispiel wird dem Konto die 111122223333 Berechtigung zum Aufrufen my-function mit dem prod Alias erteilt:

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --output text

Die Ausgabe sollte folgendermaßen aussehen:

{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}
Anmerkung

Wenn Sie add-permission danach aufrufenput-resource-policy, wird die neue Anweisung an die bestehende JSON-Richtlinie angehängt.

Um den Zugriff auf einen Benutzer oder eine Rolle in einem anderen Konto einzuschränken, geben Sie den vollständigen ARN der Identität als Prinzipal an. Beispiel, arn:aws:iam::123456789012:user/developer.