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.

Kurze Beschreibung

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 ihre 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?

Auflösung

Erstellen Sie eine IAM-Rolle für die Lambda-Funktion, die auch Zugriff auf den S3-Bucket gewährt

1.    Folgen Sie den Schritten unter Erstellen einer 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ürdigen Dienst hinzugefügt wird. Wählen Sie den Tab Trust relationships (Vertrauensbeziehungen), wählen Sie Edit trust policy (Vertrauensrichtlinie bearbeiten) und ersetzen Sie die Richtlinie durch Folgendes:

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

4. Wählen Sie Update policy (Richtlinie aktualisieren).

5.    Wählen Sie auf der RegisterkartePermissions (Berechtigungen) die Option Add inline policy (Inline-Richtlinie hinzufügen) aus.

6.    Wählen Sie auf der Registerkarte JSON aus.

7.    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 AWS 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 IAM-Richtlinien schreiben: Weitere Informationen finden Sie unter So gewähren Sie Zugriff auf einen Amazon S3-Bucket.

Wichtig: Ersetzen Sie "arn:aws:s3:::EXAMPLE-BUCKET" durch Ihren Amazon-Ressourcenname (ARN) für Ihre S3-Buckets.

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

6.    Wählen Sie Review policy (Richtlinie überprüfen).

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

8.    Wählen Sie Create policy (Richtlinie erstellen) aus.

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

1.    Öffnen Sie die Lambda-Konsole.

2.    Wählen Sie Ihre Lambda-Funktion.

3.    Wählen Sie unter Execution role (Ausführungsrolle) für Existing role (Bestehende Rolle) die IAM-Rolle aus, die Sie erstellt haben.

4.    Wählen Sie Speichern.

Stellen Sie sicher, 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 mithilfe der Amazon S3-Konsole.

Wichtig: Wenn sich Ihr S3-Bucket und die IAM-Rolle der Funktion in unterschiedlichen Konten befinden, müssen Sie auch explizit 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?

Die folgende IAM-S3-Bucket-Richtlinie gewährt einer Lambda-Ausführungsrolle kontoübergreifenden Zugriff auf einen S3-Bucket.

Wichtig: Ersetzen Sie "arn:aws:s3:::EXAMPLE-BUCKET/*" durch Ihren S3-Buckets-ARN. Ersetzen Sie „arn:aws:iam: :123456789012:role/exampleLambdaRoleFor123456789012" durch Ihre Lambda-Ausführungsrollen ARN.

{
  "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"
        ]
      }
    }
  ]
}

Verwandte Informationen

AWS-Richtliniengenerator

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr