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