我正在遵循用于在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文档)
答案 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_ID
,AWS_SECRET_ACCESS_KEY
和AWS_SESSION_TOKEN
环境变量。这些凭证称为环境凭证。