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.
Zugriff auf die Event-Funktion gewähren für AWS-Services
Wenn Sie einen AWS Dienst verwenden, um Ihre Funktion aufzurufen, erteilen Sie die Erlaubnis in einer Erklärung zu einer ressourcenbasierten Richtlinie. Sie können die Anweisung auf die gesamte Funktion anwenden oder die Anweisung auf eine einzelne Version oder einen einzelnen Alias beschränken.
Anmerkung
Wenn Sie Ihrer Funktion mit der Lambda-Konsole einen Auslöser hinzufügen, aktualisiert die Konsole die ressourcenbasierte Richtlinie der Funktion, damit der Service sie aufrufen kann. Um Berechtigungen für andere Konten oder Services zu erteilen, die in der Lambda-Konsole nicht verfügbar sind, verwenden Sie die AWS CLI-CLI.
Wir empfehlen die Verwendung put-resource-policy zur Definition einer vollständigen JSON-Richtlinie. Mit put-resource-policy können Sie Deny-Anweisungen hinzufügen, die gesamte Palette der IAM-Bedingungsschlüssel verwenden und alle Berechtigungen in einem einzigen Dokument verwalten. Sie können es auch verwendenadd-permission, um einzelne Anweisungen für einfache Anwendungsfälle hinzuzufügen.
Wichtig
Durch put-resource-policy die Verwendung werden alle vorhandenen ressourcenbasierten Richtlinien für die Ressource ersetzt. Wenn für die Ressource bereits Berechtigungen mit definiert wurdenadd-permission, werden diese put-resource-policy überschrieben. Dient get-resource-policy zum Abrufen der vorhandenen Richtlinie, bevor Sie Änderungen vornehmen.
Verwendung einer vollständigen JSON-Richtlinie (empfohlen)
Die folgende Beispielrichtlinie gewährt Amazon Simple Notification Service die Erlaubnis, eine Funktion mit dem Namen aufzurufenmy-function, jedoch nur für ein bestimmtes Thema. Außerdem werden Aufrufe aus einem bestimmten Thema verweigert.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-sns-my-topic", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:my-topic" } } }, { "Sid": "deny-sns-other-topic", "Effect": "Deny", "Principal": { "Service": "sns.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:123456789012:function:my-function", "arn:aws:lambda:us-east-2:123456789012:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:restricted-topic" } } } ] }
Speichern Sie die Richtlinie in einer Datei mit dem Namen policy.json und wenden Sie sie an mit: put-resource-policy
aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function\ --policy file://policy.json
Für Amazon S3 ist die Quelle ein Bucket, dessen ARN keine Konto-ID enthält. Es ist möglich, dass Sie einen Bucket löschen und ein anderes Konto einen Bucket mit demselben Namen erstellen könnte. Verwenden Sie den aws:SourceAccount Bedingungsschlüssel, um sicherzustellen, dass nur Ressourcen in Ihrem Konto die Funktion aufrufen können:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::my-bucket" } } } ] }
Verwenden von add-permission
Für einfache Anwendungsfälle können Sie verwenden, add-permission um einzelne Anweisungen hinzuzufügen. Der folgende Befehl erteilt Amazon Simple Notification Service die Erlaubnis, eine Funktion mit dem Namen my-function aufzurufen:
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns \ --principal sns.amazonaws.com \ --output text
Die Ausgabe sollte folgendermaßen aussehen:
{"Sid":"sns","Effect":"Allow","Principal":{"Service":"sns.amazonaws.com"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-2: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 Aufrufe auf eine bestimmte Ressource zu beschränken, verwenden Sie die Option: source-arn
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id sns-my-topic \ --principal sns.amazonaws.com \ --source-arn arn:aws:sns:us-east-2:123456789012:my-topic
Verwenden Sie für Amazon S3 die source-account Option mit Ihrer Konto-ID:
aws lambda add-permission \ --function-name my-function \ --action lambda:InvokeFunction \ --statement-id s3-account \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::amzn-s3-demo-bucket\ --source-account123456789012