Direkt zum Inhalt

Wie kann ich ressourcenbasierte Richtlinien mit AWS Lambda verwenden, um Berechtigungen für AWS-Services zu erteilen?

Lesedauer: 2 Minute
0

Ich möchte ressourcenbasierte Richtlinien für AWS Lambda verwenden, um AWS-Services die Berechtigung zu erteilen.

Kurzbeschreibung

Du kannst die AWS Command Line Interface (AWS CLI) mit Lambda verwenden, um mithilfe ressourcenbasierter Richtlinien Berechtigungen für AWS-Services zu erteilen. Weitere Informationen findest du unter Verwenden von ressourcenbasierten Richtlinien für AWS Lambda.

Lösung

Das folgende Beispiel fügt die Berechtigung für EventBridge hinzu und überprüft, ob die Lambda-Funktion die ressourcenbasierte Richtlinie aufruft.

Hinweis:

Sich vergewissern, dass für die Lambda-Funktion keine Ressourcenrichtlinie konfiguriert ist

Einige AWS-Services wie EventBridge erstellen eine ressourcenbasierte Richtlinie für die Lambda-Funktion. Stelle sicher, dass die ressourcenbasierte Richtlinie keine Berechtigung für EventBridge hat, indem du den AWS-CLI-Befehl get-policy verwendest, der dem folgenden ähnelt:

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ühre den AWS-CLI-Befehl add-permission aus, um die 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 der Berechtigungen für die ressourcenbasierte Richtlinie der Lambda-Funktion

Führe den AWS-CLI-Befehl get-policy, ähnlich dem folgenden, erneut 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 der Berechtigung aus einer ressourcenbasierten Richtlinie der Lambda-Funktion

Wenn du keinen AWS-Service mehr benötigst, um die Lambda-Funktion auszulösen, kannst du den AWS-CLI-Befehl remove-permission ähnlich dem folgenden 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 findest du unter Lambda-Kontingente.

Ähnliche Informationen

Wie behebe ich den Lambda-Fehler „The final policy size is bigger than the limit“?

AWS OFFICIALAktualisiert vor 4 Jahren