Mam automatycznie skonfigurowaną aplikację AWS, Spring Boot i próbuję skonfigurować punkt końcowy, który po prostu pobierze konkretny plik z danego zasobnika w Amazon S3. Przesłałem plik JPEG do pojemnika z mojego komputera za pomocą konsoli AWS - teraz próbuję pobrać ten plik za pomocą mojego interfejsu Spring Boot API.Spring Boot Amazon AWS S3 Bucket File Download - Access Denied
Dostaję następujący błąd: com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;
Stworzyłem użytkownika i grupę (użytkownik jest w grupie) na konsoli AWS; użytkownik/grupa ma pełne uprawnienia dostępu na S3, a także dostęp administratora. Pobrałem parę klucza dostępu/klucza tajnego i, w celach testowych, dosłownie wkleiłem klucze do mojego pliku application.properties, jak pokazano poniżej (klucze nie są tutaj pokazane, oczywiście :)).
Jestem zdezorientowany, dlaczego nadal otrzymuję odmowę dostępu. Szukałem i pracowałem nad tym przez jakiś czas; Nie mogę znaleźć rozwiązania tego problemu, który jest charakterystyczny dla Spring Boot. Każda pomoc będzie bardzo ceniona.
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 (Tylko Zależności, które są istotne z punktu widzenia kwestii)
<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>
Zmień wartość pola cloud.aws.credentials.instanceProfile = false na true i sprawdź, czy działa? – error2007s
Próbowałem i zawiodłem: 1 – corecase
Czy powyższa aplikacja Spring działa lokalnie lub na instancji EC2? – error2007s