Я добавил следующую зависимость в мое приложение Spring Boot
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
и установил cloud.aws.credentials.instanceProfile=true
в файле application.properties.
Таким образом, я надеялся, что когда яЗапустите мое приложение на экземпляре AWS EC2, оно автоматически получит учетные данные и позволит создать S3Client следующим образом.
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
.withRegion(Regions.CA_CENTRAL_1)
.build();
Однако, похоже, что он пытается создать стек в CloudFormation, потому что я получаю эту ошибку.
nested exception is
com.amazonaws.services.cloudformation.model.AmazonCloudFormationException: User: arn:aws:sts::X:assumed-role/MYROLE/Y is not authorized to perform:
cloudformation:DescribeStackResources (Service: AmazonCloudFormation; Status Code: 403;
Error Code: AccessDenied; Request ID: d24df1e2-00fd-11e9-9d60-cf9c7ee8f1dd)
Роль, связанная с моим экземпляром EC2, позволяет получить доступ только к S3.Я также могу добавить доступ к CloudFormation.Но почему он пытается использовать CloudFormation и как его можно избежать?