【问题标题】:Rails paperclip error `AWS::S3::Errors::BadRequest` on `exists?` and `clear`Rails 回形针错误 `AWS::S3::Errors::BadRequest` on `exists?` 和 `clear`
【发布时间】:2015-10-04 18:58:46
【问题描述】:

全部。

一切正常:图片正在上传,可以使用回形针和 S3 通过 Web 访问,除非我登录 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

clear 方法也是如此。还没找到解决办法。

我有这个权限政策:

    {
            "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/*"
            ]
        }

感谢您的支持。

【问题讨论】:

  • 什么版本的回形针?什么版本的 aws-sdk? exists?clear 在运行服务器时是否工作,即使它们在控制台中不工作? (即,将您在控制台中运行的那一行添加到某处的控制器中——它会记录相同的错误吗?)

标签: ruby-on-rails amazon-web-services amazon-s3 paperclip


【解决方案1】:

这可能是您的政策有问题,您可以尝试一下吗:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 2019-12-18
    • 2018-07-06
    • 2012-04-15
    • 2016-06-26
    • 2016-01-25
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多