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

Lesedauer: 4 Minute
0

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

Kurzbeschreibung

Gehen Sie wie folgt vor, um Ihrer Lambda-Funktion Zugriff auf einen Amazon S3 Bucket im selben AWS-Konto zu gewähren:

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

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

Behebung

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

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

  1. Erstellen Sie eine Ausführungsrolle in der IAM-Konsole.

  2. Wählen Sie aus der Liste der IAM-Rollen die Rolle aus, die Sie gerade erstellt haben.

  3. Die Vertrauensrichtlinie muss es Lambda ermöglichen, die Ausführungsrolle zu übernehmen, indem lambda.amazonaws.com als vertrauenswürdiger Dienst hinzugefügt wird. Wählen Sie die Registerkarte Vertrauensbeziehungen und dann Vertrauensrichtlinie bearbeiten aus.

  4. Ersetzen Sie die Variablen in der Richtlinie durch die folgenden Variablen:

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

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

  7. Wählen Sie die Registerkarte JSON.

  8. Geben Sie eine ressourcenbasierte IAM-Richtlinie ein, die Zugriff auf Ihren S3 Bucket gewährt. Weitere Informationen finden Sie unter Verwenden von ressourcenbasierten Richtlinien für Lambda. Die folgende IAM-Beispielrichtlinie gewährt Zugriff auf einen bestimmten Amazon S3 Bucket mit Get-Berechtigungen. Um auf die Objekte im Amazon S3 Bucket zuzugreifen, stellen Sie sicher, dass Sie den richtigen Pfad angeben oder ein Platzhalterzeichen („*“) verwenden. Weitere Informationen finden Sie unter Schreiben von IAM-Richtlinien: So gewähren Sie 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: Ersetzen Sie „arn:aws:s3:::EXAMPLE-BUCKET“ durch Ihren S3-Buckets-ARN. Wenn das Objekt mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt ist, müssen Sie zusätzliche Berechtigungen bereitstellen. Anweisungen finden Sie unter Mein Amazon S3 Bucket verfügt über eine Standardverschlüsselung mit einem benutzerdefinierten AWS-KMS-Schlüssel. Wie kann ich Benutzern erlauben, aus dem Bucket herunterzuladen und in den Bucket hochzuladen?

  9. Wählen Sie Richtlinie überprüfen aus.

  10. Geben Sie unter Name einen Namen für Ihre Richtlinie ein.

  11. Wählen Sie Richtlinie erstellen.

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

Gehen Sie wie folgt vor, um die IAM-Rolle als Lambda-Funktionsausführungsrolle zu konfigurieren:

  1. Öffnen Sie die Lambda-Konsole.
  2. Wählen Sie Ihre Lambda-Funktion.
  3. Wählen Sie unter Ausführungsrolle für Bestehende Rolle die IAM-Rolle aus, die Sie erstellt haben.
  4. Wählen Sie Speichern.

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

Um Ihre S3-Bucket-Richtlinie zu überprüfen oder zu bearbeiten, folgen Sie den Anweisungen unter Hinzufügen einer Bucket-Richtlinie mit der Amazon-S3-Konsole.

Die folgende IAM-Beispielrichtlinie gewährt einer Lambda-Ausführungsrolle kontoübergreifenden Zugriff auf einen S3 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: Ersetzen Sie „arn:aws:s3:::EXAMPLE-BUCKET“ durch den ARN Ihres S3 Buckets und „arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012“ durch den ARN Ihrer Lambda-Ausführungsrolle.

Ähnliche Informationen

AWS-Richtliniengenerator

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten