JAVA -AWS ACCESS S3 存储桶从 JAVA 应用程序在 EASTIC BEANTALK 上

Posted

技术标签:

【中文标题】JAVA -AWS ACCESS S3 存储桶从 JAVA 应用程序在 EASTIC BEANTALK 上【英文标题】:JAVA -AWS ACCESS S3 BUCKET FROM JAVA APPLICATION ON ELASTIC BEANSTALK 【发布时间】:2020-09-02 05:22:17 【问题描述】:

我想将文件从我的 Java Spring 应用程序上传到 S3 存储桶。

在 ./aws/credentials 中配置凭据后,这对我在 localhost 上有效。

但是,我尝试了 Elastic Beanstalk 但无法正常工作。我收到消息“权限被拒绝”。

我配置 aws-elasticbeanstalk-ec2-role 以授予对 AmazonS3FullAccess 的访问权限,并从 Elastic Beanstalk 应用程序的 Sowtware 配置中配置环境属性。

我的初始化 AmazonClient 的代码:

this.s3client = AmazonS3ClientBuilder.standard().withForceGlobalBucketAccessEnabled(true) .build();

aws-elasticbeanstalk-ec2-角色配置:

View here

我是不是跳过了什么?

【问题讨论】:

您不必为 java sdk 指定凭据提供程序吗?例如,配置文件、角色、环境变量?也许您使用了不正确的提供商? @Marcin 我指定了“并从 Elastic Beanstalk 应用程序的 Sowtware 配置中配置环境属性。”。我是不是做错了什么? 对 Java sdk 不是很熟悉,但请记住 ppl 在使用错误提供程序时会遇到问题。不知道它是否适用于这里,只是为您考虑。 【参考方案1】:

您是否检查了 ec2 上的安全组?因为您可能知道 ElasticBeanstalk 也会创建 EC2 实例。也许您阻止了出站流量?

【讨论】:

所有流量都设置了出站规则。【参考方案2】:

您似乎没有在 Elastic Beanstalk 上设置环境变量并正确设置服务客户端。阅读此 AWS 教程。它向您展示了如何从 Spring Boot 应用程序与 Amazon S3 进行交互。

Creating an example AWS photo analyzer application using the AWS SDK for Java

【讨论】:

以上是关于JAVA -AWS ACCESS S3 存储桶从 JAVA 应用程序在 EASTIC BEANTALK 上的主要内容,如果未能解决你的问题,请参考以下文章

Amazon S3 存储桶中缺少 Access-Control-Allow-Origin 标头

S3:调用GetObject操作时发生错误(AccessDenied):Access Denied

从签名的 S3 URL 获取数据:`不存在 'Access-Control-Allow-Origin' 标头`

(python) Spark .textFile(s3://...) access denied 403 with valid credentials

Amazon S3 - 不存在“Access-Control-Allow-Origin”标头

S3:请求的资源上不存在 Access-Control-Allow-Origin 标头