【发布时间】: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页面
试过
- 修复了端点/区域配置中的“抱歉出了点问题”
- 按照自定义存储桶名称等文档中的建议添加特定策略,但决定何时变得简单:
- 向 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 示例上传文件权限
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-ec2 amazon-elastic-beanstalk