【发布时间】:2019-02-10 04:37:16
【问题描述】:
我正在关注 Heroku 文档以在 S3 https://devcenter.heroku.com/articles/s3 上存储静态文件。我意识到该文档尚未更新以解释如何创建 IAM 用户,但我已经完成了该操作,并且还为存储桶和 CORS 文档创建了一个策略。然后我按照文档中的说明将环境变量添加到 Heroku,但对于 IAM 用户。我想知道的是 Heroku 如何知道如何处理这些环境变量。起名重要吗?我看到其他人将环境变量命名为 S3_* 而不是 AWS_* 就像 Heroku 文档中那样。我觉得必须缺少一个步骤,例如,“然后安装这个插件,它知道如何在请求静态文件时将这些环境变量发送到 S3”。因为当我在 Heroku 应用程序中使用单击 S3 控制台中的对象时提供的公共 URL 链接到它们时,我的图像没有显示出来
更新
我被误导认为有必要在 Heroku 上拥有一个 IAM 用户和相应的凭证作为环境变量,以便仅提供来自 S3 的静态文件。 @ceejayoz 帮助我意识到事实并非如此。您只需要一个允许 GetObject 的存储桶策略。成功执行此操作后,您将在存储桶上看到一个公共徽章,然后公众可以通过对象 URL 看到您的文件(单击 S3 控制台中的文件以查看此内容)。如果我希望能够以编程方式将文件上传到我的存储桶,我将需要一个客户端(在我的情况下,我相信 aws-sdk gem)和我上面提到的所有其他东西(环境变量、IAM 用户、CORS 文档) .
【问题讨论】: