在Michael Hartl'Rails教程的第11.4.4節'Image upload in production'中,建議將Amazon Web Services S3用作雲存儲服務。在頁面底部的註釋中,作者自己將本書的這一部分定義爲「具有挑戰性」,並且還暗示它「可以不失連續性地被跳過」。AWS S3 IAM策略,用於在單個存儲桶上讀取和寫入權限
事實上,本節中最具挑戰性的部分之一是找到一個合適的IAM策略,該策略可以附加到AWS上的IAM用戶,以授予IAM用戶對S3存儲桶的讀寫權限。
我發現這在Stackoverflow是一個常見問題:請參閱例如'Trying to set up Amazon's S3 bucket: 403 Forbidden error & setting permissions'。
實際上,對於需要在單個S3存儲桶上具有讀寫權限的應用程序,Amazon Web Services's solution不起作用,試圖上傳圖像的用戶會從Heroku的AWS服務器收到403禁止狀態。
預定義的'AmazonS3FullAccess'策略確實可行,但不應將其視爲最終解決方案,因爲向IAM用戶授予太多權限並因此授予應用程序不是必需的,而且我想也可以是一個安全漏洞。
什麼是正確的IAM政策?
你在's3:PutObject'後面缺少一個'''',並且出現AWS約束也需要'Principal'和value。 – Jasper33
感謝您注意到缺少的逗號。我編輯了原始代碼。但是,'Principal'元素僅在存儲桶策略中相關,如文檔中所述:http://amzn.to/2nJEu7q IAM策略是用戶策略 – Asarluhi