我可以从本地主机上传到 AWS S3,但不能从我的 AWS Elastic BeanStalk 实例上传?

Posted

技术标签:

【中文标题】我可以从本地主机上传到 AWS S3,但不能从我的 AWS Elastic BeanStalk 实例上传?【英文标题】:I am able to upload to AWS S3 from my localhost, but not from my AWS Elastic BeanStalk instance? 【发布时间】:2020-10-12 12:32:53 【问题描述】:

我是 AWS 新手。我已经开发了 Spring Boot 应用程序来上传 S3 存储桶中的文件。

我创建了 IAM 用户并分配了 AmazonS3FullAccess。我在我的 Spring Boot 应用程序中使用该用户 accessKey 和 accessSecret 来上传文件,并且它在我的本地主机中工作正常,但它在 AWS Elastic BeanStalk 实例中不起作用。我收到了权限被拒绝的异常消息。

【问题讨论】:

能否检查 S3 和 BeanStalk 的服务组是否相互访问? 【参考方案1】:

在您的 Elastic Beanstalk 应用程序的 Configuration 中,在 Security 部分中,应该配置了一个 IAM 实例配置文件

一旦您确定了它正在使用的角色,您需要打开Identity and Access Management (IAM) 控制台,导航到角色列表,找到该角色,并向其中添加新策略。最简单的解决方案是添加内联策略。授予它将文件上传到存储桶的权限,它应该开始工作。应该不需要重新启动服务器。

【讨论】:

谢谢。根据您的建议,我已经检查并在 Elastic Beanstalk 安全部分中发现 IAM 即时配置文件是 aws-elasticbeanstack-ec2-role,并且在 IAM 角色部分中的 elasticbeanstack-ec2-role AmazonS3FullAccess 策略已附加。我还添加了内联策略,但仍然出现 Permission Denied 错误。 您的应用程序是否使用 AWS 开发工具包或其他工具来执行 S3 操作?根据 SDK,您可能必须告诉它从元数据服务器获取凭据。 嘿@stefansundin 我面临同样的问题,并使用 aws-sdk 用于 javascript/nodejs。你能告诉我更多关于元数据服务器的信息吗? 嗨奥马尔。看来nodejs SDK会根据docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/…自动从元数据服务器获取凭据。

以上是关于我可以从本地主机上传到 AWS S3,但不能从我的 AWS Elastic BeanStalk 实例上传?的主要内容,如果未能解决你的问题,请参考以下文章

只能从我的 ElasticBeanStalk 实例访问 AWS S3 存储桶

将文件从我的计算机上传到 ubuntu 服务器

Spring Boot Amazon AWS S3 存储桶文件下载 - 拒绝访问

如何使用 Python 在 myBucket 中上传 CSV 文件并在 S3 AWS 中读取文件

使用 aws-sdk 将 gm 调整大小的图像流上传到 s3

PySpark:AWS s3n 正在工作,但 s3a 没有