2

Ich habe eine Lambda-Funktion in Java I geschrieben und ich möchte, dass es S3 (putObject) zugreifen.Verwenden Sie AWS Lambda für den Zugriff auf S3 nur mit Rollen

Ich möchte keine Anmeldeinformationen in meiner Lambda-Funktion verwenden oder speichern, um auf S3 zuzugreifen. Stattdessen möchte ich IAM-Rollen verwenden.

Wie kann ich einen AWS S3-Client in meinem Java-Code (der von Lambda ausgeführt wird) codieren, der keine Anmeldeinformationen benötigt und davon ausgeht, dass der Lambda die entsprechende Rolle hat?

Antwort

5

Sie müssen keine Anmeldeinformationen in Ihren Lambda-Funktionen speichern. Alle Funktionen werden mit einer Rolle ausgeführt - der Rolle, die Sie beim Erstellen der Funktion festgelegt haben. Da die Lambda-Funktion eine Rolle hat, können Sie die Berechtigungen dieser Rolle hinzufügen oder entfernen, je nach Bedarf, ohne die Funktion selbst

Berechtigungen verwalten: eine IAM-Rolle (Execution Rolle) Mit

Jedes Lambda Funktion hat eine IAM-Rolle (Ausführungsrolle) zugeordnet es. Sie geben die IAM-Rolle beim Erstellen Ihrer Lambda-Funktion an. Berechtigungen, die Sie dieser Rolle erteilen, bestimmen, was AWS Lambda tun kann, wenn es die Rolle übernimmt. Es gibt zwei Arten von Berechtigungen, die Sie Zuschuss an die IAM Rolle:

Wenn Ihr Lambda Funktionscode andere AWS-Ressourcen zugreift, wie zu ein Objekt aus einer S3-Bucket lesen oder schreiben Protokolle Cloudwatch-Protokolle, Sie Notwendigkeit Erteilen von Berechtigungen für relevante Amazon S3- und CloudWatch -Aktionen an die Rolle. Wenn die Ereignisquelle streambasiert ist (Amazon Kinesis Streams und DynamoDB-Streams), fragt AWS Lambda diese Streams in Ihrem Namen ab. AWS Lambda benötigt Berechtigungen zum Abrufen des Streams und Lesen neuer Datensätze im Stream, sodass Sie dieser Rolle die entsprechenden Berechtigungen erteilen müssen.

http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html

+0

Vielen Dank für die schnelle Antwort. Alle Beispiele, die ich im Web gefunden habe, sind jedoch mit gespeicherten Referenzen oder Javascript. Ich kann kein Beispiel dafür finden, wie man einen neuen S3-Client in * Java * erstellt, ohne Anmeldeinformationen zu verwenden. – yuz

+0

Vielleicht können Sie den Code in Frage stellen - nicht sicher, dass ich klar bin. –

+0

Meine Frage ist, ob es einen Weg für den s3-Client gibt, wie folgt erstellt: AmazonS3 s3Client = AmazonS3ClientBuilder.standard(). Build() ohne Anmeldeinformationen in Java erstellt werden? – yuz

Verwandte Themen