Heroku如何使用AWS S3凭证访问存储桶中的图像?

时间:2019-02-10 04:37:17

标签: heroku amazon-s3

我正在遵循用于在S3 https://devcenter.heroku.com/articles/s3上存储静态文件的Heroku文档。我知道此文档尚未更新以说明如何创建IAM用户,但是我已经做到了,并且还为存储分区和CORS文档创建了策略。然后,按照文档中的说明,将添加环境变量添加到Heroku中,但仅适用于IAM用户。我想知道的是Heroku如何知道如何处理这些env变量。命名重要吗?我已经看到其他人像Heroku文档中那样将环境变量命名为S3_ *而不是AWS_ *。我觉得必须缺少一个步骤,例如:“然后安装此加载项,它知道当请求静态文件时如何将这些环境变量发送到S3”。因为当我在S3控制台中单击对象时使用提供的公共URL在Heroku应用程序中将其链接到我的图像时,这些图像没有显示

更新

我被误认为必须要有一个IAM用户和相应的凭据作为Heroku上的env vars才能提供来自S3的静态文件。 @ceejayoz帮助我意识到情况并非如此。您只需要一个允许GetObject的存储桶策略即可。成功执行此操作后,您将在存储桶上看到“公共”徽章,然后您可以通过对象URL公开查看您的文件(在S3控制台中单击文件以查看此信息)。如果我想能够以编程方式将文件上传到存储桶,则需要一个客户端(我相信是aws-sdk gem)和上面提到的所有其他内容(env vars,IAM用户,CORS文档)

1 个答案:

答案 0 :(得分:0)

由您选择的语言的AWS开发工具包处理。

例如,在PHP中:

https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_environment.html

  

要向Amazon Web Services进行身份验证,SDK首先检查环境变量中的凭证。 SDK使用getenv()函数查找AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN环境变量。这些凭证称为环境凭证。