Spring Boot Download do arquivo de bucket do Amazon AWS S3 - Acesso negado
Eu tenho um aplicativo AWS, Spring Boot configurado automaticamente e estou tentando configurar um ponto de extremidade que simplesmente fará o download de um arquivo específico de um determinado bucket no Amazon S3. Carreguei um arquivo JPEG no balde do meu computador usando o console da AWS - agora estou tentando fazer o download desse arquivo usando minha API de inicialização da Primavera.
Estou recebendo o seguinte erro:com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;
Criei um usuário e um grupo (o usuário está no grupo) no console da AWS; o usuário / grupo tem permissões de acesso total no S3, bem como acesso de administrador. Fiz o download do par de chave de acesso / chave secreta e, para fins de teste, colei literalmente as chaves no meu arquivo application.properties conforme mostrado abaixo (as chaves não são mostradas aqui, obviamente :)).
Estou confuso sobre o motivo pelo qual ainda estou tendo acesso negado. Estive pesquisando e trabalhando nisso por um tempo; Não consigo encontrar uma solução para esse problema específica do Spring Boot. Qualquer ajuda seria muito apreciada.
application.properties:
cloud.aws.credentials.accessKey=myaccesskey
cloud.aws.credentials.secretKey=mysecretkey
cloud.aws.credentials.instanceProfile=false
cloud.aws.stack.auto=false
cloud.aws.region.auto=true
cloud.aws.region.static=myregion
SimpleResourceLoadingBean.java:
@RestController
public class SimpleResourceLoadingBean {
private static Logger log = LoggerFactory.getLogger(HealthMonitorApplication.class);
@Autowired
private ResourceLoader resourceLoader;
@RequestMapping("/getresource")
public String resourceLoadingMethod() throws IOException {
log.info("IN RESOURCE LOADER");
Resource resource = this.resourceLoader.getResource("s3://s3.amazonaws.com/mybucket/myfile.ext");
InputStream inputStream = resource.getInputStream();
return inputStream.toString();
}
}
pom.xml (apenas as dependências relevantes para a pergunta)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>