spring-cloud-aws从EC2运行时无法将文件放入S3

vij*_*thi 11 amazon-s3 spring-boot spring-cloud

我试图通过我的Spring Boot应用程序使用AmazonS3Client将一些文件放入S3存储桶中.在AWS中,我创建了一个IAM用户(test_user1)并授予该用户S3完全访问权限.同样在S3中,我向该用户授予了"s3:*"操作.在我的配置文件中为cloud.aws.credentials.accessKey和cloud.aws.credentials.secretKey指定了相同的用户凭据.

当我从本地计算机运行应用程序时,它工作正常.我可以在S3存储桶中放入多个文件并查看文件.

但是,当从AWS EC2实例运行相同的应用程序时,我会在应用程序启动时收到以下错误:

引起:org.springframework.beans.BeanInstantiationException:无法实例化org.springframework.cloud.aws.core.env.stack.config.StackResourceRegistryFactoryBean ]:工厂方法'stackResourceRegistryFactoryBean'抛出异常; 嵌套异常是com.amazonaws.AmazonServiceException:User:arn:aws:iam :: 560600000009:user/test_user1无权执行:cloudformation:DescribeStackResources(Service:AmazonCloudFormation; Status Code:403; Error Code:AccessDenied;

从EC2实例中运行的代码访问S3时,我还需要设置其他东西吗?我没有使用Amazon Cloud Formation.

以下是我的项目的样子:

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'
Run Code Online (Sandbox Code Playgroud)

application.yml:

bucket: test-bucket-1
cloud.aws.credentials.accessKey: AxxxxxxxxxxxxxxA
cloud.aws.credentials.secretKey: jxxxxxxxxxxxxxxR
cloud.aws.credentials.instanceProfile:  true
Run Code Online (Sandbox Code Playgroud)

AmazonS3Client在我的服务类中自动装配.

@Autowired
public FileService(AmazonS3Client s3Client) {..}
Run Code Online (Sandbox Code Playgroud)

Cri*_*uez 27

Spring Cloud AWS尝试自动配置CloudFormation(当应用程序在EC2中运行时).

我在application.properties中解决了这个错误,禁用了autoconf

cloud.aws.stack.auto=false
Run Code Online (Sandbox Code Playgroud)

阅读本文以获取更多信息http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_automatic_cloudformation_configuration.

最后:抱歉我的英语