Sto provando a inserire alcuni file nel bucket S3 tramite la mia app Spring Boot utilizzando AmazonS3Client. In AWS, ho creato un utente IAM (test_user1) e ho concesso a S3 i diritti di accesso completo a questo utente. Anche in S3, ho concesso azioni "s3: *" a questo utente. Le credenziali dell'utente stesso sono specificate per cloud.aws.credentials.accessKey e cloud.aws.credentials.secretKey nei miei file di configurazione.spring-cloud-aws non è in grado di caricare file su S3 quando viene eseguito da EC2
Quando eseguo l'app dal mio computer locale, funziona correttamente. Sono in grado di mettere più file nel bucket S3 e visualizzare i file.
Ma, quando la stessa applicazione viene eseguito da un'istanza AWS EC2, ottengo errori soffietto all'avvio dell'applicazione:
Causato da: org.springframework.beans.BeanInstantiationException: Impossibile creare un'istanza org.springframework.cloud .aws.core.env.stack.config.StackResourceRegistryFactoryBean]: il metodo factory 'stackResourceRegistryFactoryBean' ha generato un'eccezione; l'eccezione nidificata è com.amazonaws.AmazonServiceException: Utente: arn: aws: iam :: 560600000009: utente/test_user1 non è autorizzato a eseguire: cloud: DescreStackResources (Servizio: AmazonCloudFormation; Codice stato: 403; Codice errore: AccessDenied;
?c'è qualcos'altro che devo impostare quando si accede S3 dal codice in esecuzione in istanza EC2 non sto usando Formazione Amazon cloud
Ecco come il mio progetto si presenta come:.
build.gradle:
compile 'org.springframework.cloud:spring-cloud-aws-autoconfigure:1.0.3.RELEASE'
compile 'org.springframework.cloud:spring-cloud-aws-context:1.0.3.RELEASE'
application.yml:
bucket: test-bucket-1
cloud.aws.credentials.accessKey: AxxxxxxxxxxxxxxA
cloud.aws.credentials.secretKey: jxxxxxxxxxxxxxxR
cloud.aws.credentials.instanceProfile: true
AmazonS3Client è autowired nella mia classe di servizio.
@Autowired
public FileService(AmazonS3Client s3Client) {..}
Grazie Cris, questo ha funzionato per me. –