Wie erlaube ich meiner Lambda-Funktion den Zugriff auf meinen Amazon S3 Bucket?
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:
- Erstellen Sie eine AWS Identity and Access Management (IAM)-Rolle für die Lambda-Funktion, die auch Zugriff auf den S3 Bucket gewährt.
- Konfigurieren Sie die IAM-Rolle als Ausführungsrolle für Lambda-Funktionen.
- 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:
-
Wählen Sie aus der Liste der IAM-Rollen die Rolle aus, die Sie gerade erstellt haben.
-
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.
-
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" } ] }
-
Wählen Sie Richtlinie aktualisieren.
-
Wählen Sie auf der Registerkarte Berechtigungen die Option Inline-Richtlinie hinzufügen aus.
-
Wählen Sie die Registerkarte JSON.
-
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?
-
Wählen Sie Richtlinie überprüfen aus.
-
Geben Sie unter Name einen Namen für Ihre Richtlinie ein.
-
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:
- Öffnen Sie die Lambda-Konsole.
- Wählen Sie Ihre Lambda-Funktion.
- Wählen Sie unter Ausführungsrolle für Bestehende Rolle die IAM-Rolle aus, die Sie erstellt haben.
- 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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- Wie erlaube ich Kunden, die TLS 1.2 oder höher nicht verwenden, Zugriff auf meine Amazon S3-Buckets?AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 8 Monaten