加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Rails和Paperclip的s3的简单Amazon IAM策

发布时间:2020-12-16 23:00:22 所属栏目:百科 来源:网络整理
导读:我的IAM策略应该是什么样的,以便允许用户my-user访问名为my-bucket的Amazon S3存储桶? 目前,我已为我的用户分配以下策略: { "Version": "2012-10-17","Statement": [ { "Effect": "Allow","Action": ["s3:ListBucket"],"Resource": ["arn:aws:s3:::my-buck
我的IAM策略应该是什么样的,以便允许用户my-user访问名为my-bucket的Amazon S3存储桶?

目前,我已为我的用户分配以下策略:

{
  "Version": "2012-10-17","Statement": [
    {
      "Effect": "Allow","Action": ["s3:ListBucket"],"Resource": ["arn:aws:s3:::my-bucket"]
    },{
      "Effect": "Allow","Action": [
        "s3:PutObject","s3:GetObject","s3:DeleteObject"
      ],"Resource": ["arn:aws:s3:::my-bucket/*"]
    }
  ]
}

我从以下链接的“示例1”获得此政策:

http://blogs.aws.amazon.com/security/post/Tx3VRSWZ6B3SHAV/Writing-IAM-Policies-How-to-grant-access-to-an-Amazon-S3-bucket

在我的production.rb文件中,我已经实现了配置设置来告诉paperclip使用S3:

config.paperclip_defaults = {
  :storage => :s3,:s3_credentials => {
    :bucket => 'my-bucket',:access_key_id => ENV['AWS_ACCESS_KEY_ID'],:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}

当我尝试使用我的应用上传照片时,我收到了AWS :: S3 :: Errors :: AccessDenied异常.

奇怪的是,如果我加载rails控制台,并运行以下代码手动上传文件,它可以正常工作:

s3 = AWS::S3.new(access_key_id: ENV['AWS_ACCESS_KEY_ID'],secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])
bucket = s3.buckets['my-bucket']
obj = bucket.objects['new_file']
obj.write(Pathname.new('/path/to/file'))

这会将文件正确上传到我的S3存储桶.我很困惑为什么我明显有权以这种方式上传文件,但是当我尝试通过回形针使用相同的凭据进行操作时,我得到了权限被拒绝的错误.

更令人困惑的是,当我将AdministratorAccess策略分配给my-user时,paperclip能够成功上传文件.

知道如何解决这个问题吗?

解决方法

解决方案在这里: https://stackoverflow.com/a/19185045/736864

当paperclip将文件上传到S3时,它还会尝试将文件设置为可公开查看,这意味着需要为用户提供设置权限的访问权限.将s3:PutObjectAcl权限添加到我的IAM策略修复了该问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读