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

12

我正在尝试使用AmazonS3Client在我的Spring Boot应用程序中将一些文件放入S3存储桶。在AWS中,我创建了一个IAM用户(test_user1),并授予该用户S3完全访问权限。在S3中,我还向该用户授予了“s3:*”操作。我的配置文件中指定了相同用户的凭据accessKey和secretKey。

当我从我的本地计算机运行该应用程序时,它可以正常工作。我能够将多个文件放入S3存储桶并查看这些文件。

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

Caused by: 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(服务:AmazonCloudFormation;状态码:403;错误代码: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'

应用配置文件:application.yml

bucket: test-bucket-1
cloud.aws.credentials.accessKey: AxxxxxxxxxxxxxxA
cloud.aws.credentials.secretKey: jxxxxxxxxxxxxxxR
cloud.aws.credentials.instanceProfile:  true

我的服务类中使用了自动装配的AmazonS3Client。

@Autowired
public FileService(AmazonS3Client s3Client) {..}
1个回答

30

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

我通过在 application.properties 中禁用自动配置来解决了这个错误。

cloud.aws.stack.auto=false

点击链接了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接