标准角色的 Elastic Beanstalk S3 权限:文件访问权限仍然被拒绝
Posted
技术标签:
【中文标题】标准角色的 Elastic Beanstalk S3 权限:文件访问权限仍然被拒绝【英文标题】:Elastic Beanstalk S3 permission on standard role: still permission denied on file access 【发布时间】:2016-07-07 14:56:37 【问题描述】:尝试让 EB 与 S3 存储桶一起使用。 以为我已遵循所有说明,但无法上传 pdf 以显示(当前“权限被拒绝”)。我之前在 heroku + S3 上做过这个,所以知道它在理论上是有效的。
设置
Ruby EB,单实例。使用默认应用创建 添加了paperclip demo app 应用程序:paperclipdemo3 环境:paperclipdemo3-dev 实例配置文件 (aws-elasticbeanstalk-ec2-role)。标准服务 配置文件(aws-elasticbeanstalk-service-role) 附加了对此角色的 AmazonS3FullAccess 在同一区域创建的 S3 存储桶错误 查看上传的文件(pdf)时给出 AccessDeniedAccess Denied5CDDC975006C7C62h3ohBvPu8hXYIZkwLsgF/k0akNuLjyaOpbBzgsxmgtesQ/UJBlOH6phRrsr0tPowNFBFZ7LCI7M=
上传的文档 S3 路径
根据生成的html页面
https://s3-ap-southeast-2.amazonaws.com/paperclipdemo3bucket1/var/app/current/public/pdf/1/original/testupload_2page_doc1.pdf?1458545227
试过
修复了端点/区域配置中的“抱歉出了点问题” 按照自定义存储桶名称等文档中的建议添加特定策略,但决定何时变得简单: 向 aws-elasticbeanstalk-ec2-role 添加 S3 完全访问权限(这似乎是此处定义的“最简单”:"SO S3 permissions"。 使 S3 存储桶世界可读(即每个人),它会拒绝相同的访问这肯定可以工作!?只是无法让它工作。打赌它很明显!?
希望其他人能比我更快地发现,任何想法表示赞赏
本
编辑 1 - 我注意到人们谈论看到 logs in EB console,但我所能做的就是下载最后 100 行或完整的 EC2 日志。我的日志都没有提到 S3 错误(除了上传文件的回形针),没有返回码。 我还注意到我的 S3 存储桶没有写入任何日志(即使在同一区域附加了一个单独的日志存储桶)
回形针配置
config.paperclip_defaults =
:storage => :s3,
:s3_region => 'ap-southeast-2',
:s3_permissions => :private,
:s3_protocol => 'https',
:s3_host_name => 's3-ap-southeast-2.amazonaws.com',
:s3_endpoint => 's3-ap-southeast-2.amazonaws.com',
:s3_credentials =>
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
角色
角色 aws-elasticbeanstalk-ec2-role 的策略
EB 配置环境变量
S3 示例上传文件权限
【问题讨论】:
【参考方案1】:我混合使用 S3 策略和 ACL。这个配置是罪魁祸首
:s3_permissions => :private,
如果它被删除,它就会公开!
对此有很好的解释:https://thewebfellas.com/blog/protecting-your-paperclip-downloads 此处列出了 ACL:http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
【讨论】:
以上是关于标准角色的 Elastic Beanstalk S3 权限:文件访问权限仍然被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
登录角色时出现 AWS Elastic Beanstalk ServiceRole 错误
如何将 Django 标准输出转发到 Elastic Beanstalk 日志?
Elastic Beanstalk 拒绝 AWS S3 存储权限