Wie kann ich ressourcenbasierte Richtlinien mit AWS Lambda verwenden, um Berechtigungen für AWS-Services zu erteilen?
Ich möchte ressourcenbasierte Richtlinien mit AWS Lambda verwenden, um Berechtigungen für AWS-Services zu erteilen.
Kurzbeschreibung
Sie können AWS Command Line Interface (AWS CLI) mit Lambda verwenden, um AWS-Services mithilfe ressourcenbasierter Richtlinien Berechtigungen zu erteilen. Weitere Informationen finden Sie unter Verwendung ressourcenbasierter Richtlinien für AWS Lambda.
Auflösung
Im folgenden Beispiel wird die Berechtigung für EventBridge hinzugefügt und überprüft, ob die Lambda-Funktion die ressourcenbasierte Richtlinie aufruft.
Hinweis:
- Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.
- Ersetzen Sie your-event und your-function durch Ihre Variablen und your-region durch Ihre AWS-Region.
Vergewissern Sie sich, dass für die Lambda-Funktion keine Ressourcenrichtlinie konfiguriert ist
Einige AWS-Services wie EventBridge erstellen eine ressourcenbasierte Richtlinie für die Lambda-Funktion. Stellen Sie mit dem AWS-CLI-Befehl get-policy sicher, dass die ressourcenbasierte Richtlinie keine Berechtigung für EventBridge hat, ähnlich dem folgenden:
aws lambda get-policy --region your-region --function-name your-function An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.
Dieser Fehler bestätigt, dass für die Lambda-Funktion keine ressourcenbasierte Richtlinie konfiguriert ist.
Berechtigungen für EventBridge hinzufügen
Führen Sie den AWS-CLI-Befehl add-permission aus, um eine Lambda-Funktion ähnlich der folgenden aufzurufen:
aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event" { "Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}" }
Überprüfen Sie die Berechtigungen für die ressourcenbasierte Richtlinie der Lambda-Funktion
Führen Sie den AWS-CLI-Befehl get-policy erneut ähnlich wie folgt aus:
aws lambda get-policy --region your-region --function-name your-function { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "your-event-permission", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event" } } } ] }
(Optional) Entfernen Sie die Berechtigung aus einer ressourcenbasierten Richtlinie für Lambda-Funktionen
Wenn Sie keinen AWS-Service mehr benötigen, um die Lambda-Funktion auszulösen, können Sie den AWS-CLI-Befehl remove-permission ähnlich wie folgt ausführen:
aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"
Hinweis: Das ressourcenbasierte Richtlinienkontingent der Lambda-Funktion beträgt 20 KB. Weitere Informationen finden Sie unter Lambda-Kontingente.
Relevante Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren