ruby-on-rails - 如何调试 AWS S3“拒绝访问”
问题描述
我有一个在 Heroku 上托管 Paperclip 的 rails 应用程序(尽管我现在只在本地测试)
我创建了一个存储桶和一个AmazonS3FullAccess
直接附加策略的用户。
我有以下开发.rb
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
但是,当我尝试将个人资料图片附加到我的模型时,我得到:
Aws::S3::Errors::AccessDenied (Access Denied):
我该如何调试这个问题?我已经删除并重新创建了我的 IAM 用户和我的存储桶,但我不知道哪里出错了。
关于如何找出我所缺少的任何见解?
解决方案
我没有确定如何调试这个问题,但是,我确实找到了解决方案。
首先,我切换到gem 'aws-sdk-s3'
而不是需要整个 aws-sdk
我意识到我需要为我的存储桶创建一个策略,特别是允许我的用户完全访问。似乎仅向我的用户添加 AmazonS3FullAccess 是不够的。
我一步一步地遵循这个指南,它让我开始运行。
推荐阅读
- java - 错误:“JSONArray 文本必须在 1 [字符 2 第 1 行] 处以 '[' 开头”不适用
- c++ - 在 Qt MinGW 编译器中处理 __event
- powershell - 使用 PowerShell 提取文件名的一部分
- r - 在 R 中分解数据
- mysql - MySQL - 在多个模式中搜索特定值
- php - 在 PHP/Apache/Ubuntu 上运行长进程
- ios - UITableView 具有表格及其单元格的动态高度
- php - jquery datepicker is not working 控制器PHP中存在文本框
- java - Java 正则表达式。不包括分隔符的组
- amazon-web-services - 如何减少 EC2 实例的根 EBS 卷大小?