Direkt zum Inhalt

Wie erlaube ich meiner Lambda-Funktion den Zugriff auf meinen Amazon-S3-Bucket?

Lesedauer: 3 Minute
0

Ich möchte, dass meine AWS-Lambda-Funktion auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket zugreifen kann.

Kurzbeschreibung

Gehe wie folgt vor, um der Lambda-Funktion Zugriff auf einen S3-Bucket im selben AWS-Konto zu gewähren:

  1. Erstelle eine AWS Identity and Access Management (IAM)-Rolle für die Lambda-Funktion, die auch Zugriff auf den Bucket gewährt.
  2. Konfiguriere die IAM-Rolle als Ausführungsrolle für Lambda-Funktionen.
  3. Stelle sicher, dass die Bucket-Richtlinie den Zugriff auf die Lambda-Funktion oder deren Ausführungsrolle nicht explizit verweigert.

Wichtig: Wenn sich der Bucket und die IAM-Rolle der Funktion in unterschiedlichen Konten befinden, musst du auch die erforderlichen Berechtigungen für die Bucket-Richtlinie erteilen. Weitere Informationen findest du unter Wie kann ich kontoübergreifenden Zugriff auf Objekte gewähren, die sich in Amazon-S3-Buckets befinden?

Lösung

Eine IAM-Rolle für die Lambda-Funktion erstellen, die auch Zugriff auf den Bucket gewährt

Gehe wie folgt vor, um eine IAM-Rolle für die Lambda-Funktion zu erstellen, die auch Zugriff auf den Bucket gewährt:

  1. Erstelle eine Ausführungsrolle in der IAM-Konsole.

  2. Wähle aus der Liste der IAM-Rollen die Rolle aus, die du erstellt hast.

  3. Wähle die Registerkarte Vertrauensbeziehungen und dann Vertrauensrichtlinie bearbeiten aus.

  4. Ersetze die Anweisung in der Richtlinie durch die folgende Anweisung:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
         "Effect": "Allow",
         "Principal": {
         "Service": "lambda.amazonaws.com"
        },
      "Action": "sts:AssumeRole"
      }
     ]
    }
  5. Wähle Richtlinie aktualisieren.

  6. Wähle auf der Registerkarte Berechtigungen die Option Inline-Richtlinie hinzufügen aus.

  7. Wähle die Registerkarte JSON.

  8. Füge eine ressourcenbasierte IAM-Richtlinie hinzu, die Zugriff auf den Bucket gewährt. Weitere Informationen findest du unter Anzeigen ressourcenbasierter IAM-Richtlinien in Lambda. Die folgende IAM-Beispielrichtlinie gewährt Zugriff auf einen bestimmten Bucket mit Get-Berechtigungen. Um auf die Objekte im Bucket zuzugreifen, gib den richtigen Pfad an oder verwende ein Platzhalterzeichen („*“). Weitere Informationen findest du unter Schreiben von IAM-Richtlinien: So gewährst du Zugriff auf einen Amazon-S3-Bucket.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "ExampleStmt",
          "Action": [
            "s3:GetObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::example-bucket/*"
          ]
        }
      ]
    }

    Hinweis: Ersetze "arn:aws:s3:::example-bucket" durch den Amazon-Ressourcennamen (ARN) deines Buckets. Wenn du das Objekt mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt hast, musst du auch die erforderlichen Berechtigungen bereitstellen. Weitere Informationen findest du unter Wie erlaube ich Benutzern, von einem Amazon-S3-Bucket herunterzuladen und in einen Amazon-S3-Bucket hochzuladen, den ich mit einem vom Kunden verwalteten AWS-KMS-Schlüssel verschlüsselt habe?

  9. Wähle Richtlinie überprüfen.

  10. Gib unter Name einen Namen für deine Richtlinie ein.

  11. Wähle Richtlinie erstellen.

Konfigurieren der IAM-Rolle als Ausführungsrolle für Lambda-Funktionen

Gehe wie folgt vor, um die IAM-Rolle als Ausführungsrolle für Lambda-Funktionen zu konfigurieren:

  1. Öffne die Lambda-Konsole.
  2. Wähle deine Lambda-Funktion.
  3. Wähle unter Ausführungsrolle für Vorhandene Rolle die IAM-Rolle aus, die du erstellt hast.
  4. Wähle Speichern aus.

Sicherstellen, dass die Bucket-Richtlinie den Zugriff auf die Lambda-Funktion oder deren Ausführungsrolle nicht explizit verweigert

Verwende die Amazon-S3-Konsole, um die Bucket-Richtlinie zu überprüfen. Stelle sicher, dass die Richtlinie den Zugriff auf die Lambda-Funktion und ihre Ausführungsrolle zulässt.

Die folgende IAM-Beispielrichtlinie gewährt einer Lambda-Ausführungsrolle kontoübergreifenden Zugriff auf einen Bucket:

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example-bucket/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

Hinweis: Ersetze "arn:aws:s3:::example-bucket" durch den ARN deines Buckets und "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" durch den ARN deiner Lambda-Ausführungsrolle.

Ähnliche Informationen

AWS-Richtliniengenerator