Wie erlaube ich meiner Lambda-Ausführungsrolle den Zugriff auf meinen Amazon-S3-Bucket?

Letzte Aktualisierung: 20.07.2021

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

Kurzbeschreibung

Um Ihrer Lambda-Funktion Zugriff auf einen Amazon-S3-Bucket im selben AWS-Konto zu geben, gehen Sie wie folgt vor:

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 die Lambda-Funktion.

3.    Vergewissern Sie sich, dass die S3-Bucket-Richtlinie den Zugriff auf Ihre Lambda-Funktion oder deren Ausführungsrolle nicht ausdrücklich 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 erteilen. Weitere Informationen finden Sie unter Wie kann ich kontoübergreifenden Zugriff auf Objekte in Amazon-S3-Buckets bereitstellen?

Auflösung

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

1.    Führen Sie die Schritte unter Erstellen einer Ausführungsrolle in der IAM-Konsole aus.

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

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

4.    Wählen Sie die Registerkarte JSON aus.

5.    Geben Sie eine ressourcenbasierte IAM-Richtlinie ein, die Zugriff auf Ihren S3-Bucket gewährt. Weitere Informationen finden Sie unter Verwendung ressourcenbasierter Richtlinien für AWS Lambda.

Beispiel für eine IAM-Richtlinie, die Zugriff auf einen bestimmten S3-Bucket gewährt

Wichtig: Ersetzen Sie "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" durch den Amazon Resource Name (ARN) Ihres S3-Buckets.

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

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

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

8.    Wählen Sie Richtlinie erstellen aus.

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

1.    Öffnen Sie die Lambda-Konsole.

2.    Wählen Sie Ihre Lambda-Funktion.

3.    Wählen Sie unter Ausführungsrolle für Vorhandene Rolle die IAM-Rolle aus, die Sie erstellt haben.

4.    Wählen Sie Speichern aus.

Vergewissern Sie sich, dass die S3-Bucket-Richtlinie den Zugriff auf Ihre Lambda-Funktion oder deren Ausführungsrolle nicht ausdrücklich 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.

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

Beispiel einer IAM-S3-Bucket-Richtlinie, die einer Lambda-Ausführungsrolle kontoübergreifenden Zugriff auf ein S3-Bucket gewährt

Wichtig: Ersetzen Sie "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" durch den ARN Ihres S3-Buckets. Ersetzen Sie "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" durch den ARN Ihrer Lambda-Ausführungsrolle.

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

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?