Ich versuche, einige Dateien im S3-Bucket über meine Spring Boot-App mit AmazonS3Client zu speichern. In AWS habe ich einen IAM-Benutzer (test_user1) erstellt und diesem Benutzer S3-Vollzugriffsrechte gewährt. Auch in S3 habe ich diesem Benutzer "s3: *" -Aktionen gewährt. Die Anmeldeinformationen des gleichen Benutzers sind für cloud.aws.credentials.accessKey und cloud.aws.credentials.secretKey in meinen Konfigurationsdateien angegeben.
Wenn ich die App von meinem lokalen Computer aus starte, funktioniert es einwandfrei. Ich bin in der Lage, mehrere Dateien in S3-Bucket zu legen und die Dateien anzuzeigen.
Wenn jedoch dieselbe App von einer AWS EC2-Instanz ausgeführt wird, erhalte ich beim Start der Anwendung folgende Fehler:
wird verursacht durch: org.springframework.beans.BeanInstantiationException: Instanziieren fehlgeschlagen org.springframework.cloud.aws.core.env.stack.config.StackResourceRegistryFactoryBean ]: Die Factory-Methode 'stackResourceRegistryFactoryBean' hat eine Ausnahme ausgelöst ; verschachtelte Ausnahme ist com.amazonaws.AmazonServiceException: Benutzer: arn: aws: iam :: 560600000009: Benutzer / test_user1 ist nicht zum Ausführen berechtigt: cloudformation: DescribeStackResources (Service: AmazonCloudFormation; Statuscode: 403; Fehler Code: Zugriff verweigert;
Gibt es noch etwas anderes, das ich beim Zugriff auf S3 aus dem Code in der EC2-Instanz einstellen muss? Ich verwende nicht Amazon Cloud Formation.
So sieht mein Projekt aus:
build.gradle:
%Vor%application.yml:
%Vor%AmazonS3Client wird in meiner Serviceklasse automatisch gestartet.
%Vor%Spring Cloud AWS versucht, CloudFormation automatisch zu konfigurieren (wenn die App in EC2 ausgeführt wird).
Ich habe diesen Fehler behoben, indem ich autoconf in application.properties deaktiviert habe
%Vor%Lesen Sie dies für weitere Informationen Ссылка .
Und schließlich: Sorry für mein Englisch
Tags und Links amazon-s3 spring-boot spring-cloud