1

我有1个s3桶,1个elasticbeanstalk实例。当然,我的s3bucket是公开的,因此它可以从任何域访问,甚至可以从我的本地主机访问。 我希望我的所有S3存储桶资源都应该可以从我的EBS实例访问,只有我的APP托管/运行时才可以访问。我的应用程序应该能够查看这些资源并将新图像/资源上传到此存储桶。 我相信有人myt做到了这一点。AWS S3桶只能从我的ElasticBeanStalk实例中访问

回答

0

控制对S3的访问有几种方法。使私密访问的最佳做法是:不要授予在存储桶策略中访问您的S3存储桶/文件的任何权限。

但是,您应该创建一个IAM角色,该角色具有对S3的完全访问权限或对某些操作的有限访问权限(某些存储桶)。

对于每个EC2实例以及每个Elastic Beanstalk环境,您都可以附加一个IAM角色。该角色将通过实例元数据自动提供给您的实例。这是为您的实例赋予特殊权限的安全方式。

(注:这是一个AWS安全最佳做法,因为AWS将处理您的EC2箱钥匙圈。)

+0

我明白IAM的点,而是通过URL例如访问S3资源<< s3bucket主机名称>>/my-images/imagefile.jpg ...来自我在EBS上托管的应用程序。它可以像www.xyz.com ..现在在这个应用程序中,我有 user3112954

+0

问题是,你的问题是要求一个完全不同的东西,如果你使用IMG标签向用户发送HTML,那么该文件将被浏览器下载,如果它是一个直接的S3链接,那么它会去直接访问S3,而不是通过你的实例(这就是使用S3的要点)。限制公共访问S3的最佳实践是签名URL-s,它会为每个用户提供临时URL-s,但使用签名URL-s对于大量的文件可能会花费你很多钱/资源 –

+0

嗨,亚当,你可以建议一个政策示例,其中桶图像只能从我的应用程序部署在EBS中访问。 – user3112954