ruby-on-rails – Rails回形针错误`AWS :: S3 ::错误:: BadRequest`对`存在?`和`清除`

所有.

我的一切工作正常:图像正在上传,可以通过Web使用paperclip和S3访问,除非我登录rails c并键入以下内容:

> User.first.avatar.exists?
[AWS S3 400 0.093287 0 retries] head_object(:bucket_name=>"mozg-staging-static",:key=>"users/avatars/000/000/001/original/289736.jpg") AWS::S3::Errors::BadRequest AWS::S3::Errors::BadRequest

=> false

同样的方法是明确的方法.找不到解决方案了.

我有这个许可政策:

{
            "Sid": "Stmt1436958517000","Effect": "Allow","Action": [
                "s3:AbortMultipartUpload","s3:DeleteObject","s3:DeleteObjectVersion","s3:GetBucketAcl","s3:GetBucketCORS","s3:GetObject","s3:GetObjectAcl","s3:GetObjectVersion","s3:GetObjectVersionAcl","s3:ListBucket","s3:ListBucketMultipartUploads","s3:ListBucketVersions","s3:ListMultipartUploadParts","s3:ListObjects","s3:PutObject","s3:PutObjectAcl","s3:PutObjectVersionAcl","s3:RestoreObject"
            ],"Resource": [
                "arn:aws:s3:::mozg-staging-static","arn:aws:s3:::mozg-staging-static/*"
            ]
        }

谢谢你的支持.

解决方法

这可能是您的政策的问题,您可以尝试:
{
  "Version": "2012-10-17","Statement": [
    {
      "Effect": "Allow","Action": [
          "s3:ListBucket"
      ],"Resource": ["arn:aws:s3:::mozg-staging-static"]
    },{
      "Effect": "Allow","Action": [
        "s3:PutObject","s3:DeleteObject"
      ],"Resource": ["arn:aws:s3:::mozg-staging-static/*"]
    }
  ]
}

需要在存储桶级别设置ListBucket操作,而需要针对存储桶中的对象设置PutObject,GetObject和DeleteObject.我遗漏了其他行动以保持答案简短.如果需要,您当然需要重新添加它们.您可以在此处找到操作列表以及它们是桶操作还是对象操作:http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...