Aws :: S3 :: Errors :: AccessDenied ROLLBACK 500内部服务器错误

时间:2019-05-08 06:35:04

标签: ruby-on-rails ruby amazon-s3 paperclip aws-sdk

我正在尝试使用导轨和回形针上的红宝石在s3存储桶上上传图像,但无法正常工作,我已经尝试了网络上的几乎所有内容。

我知道对此有很多问题,但是我尝试了大多数问题,但没有任何效果,请复查该问题,因为我列出了我在该问题中尝试过的事情

我确实设置了IAM用户,并且用户具有AmazonS3FullAccess策略

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
    }
  ]
 }

我确实在存储桶上设置了策略

{
"Version": "2012-10-17",
"Id": "Policy1557294263403",
"Statement": [
    {
        "Sid": "Stmt1557294241958",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::726051891502:user/borroup-admin"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::borroup",
            "arn:aws:s3:::borroup/*"
        ]
      }
    ]
 }

我确实在存储桶上设置了CORS配置编辑器

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我确保将此存储桶的所有“公共访问权限”设置都设置为“假”

enter image description here

这是Rails配置上的红宝石

注意:我为此使用了用户access_key_id和secret_access_key

config.paperclip_defaults = {
    storage: :s3,
    path: ':class/:attachment/:id/:style/:filename',
    s3_host_name: 's3.us-east-2.amazonaws.com',
    s3_credentials:{
      bucket:'borroup',
      access_key_id: '************',
      secret_access_key:'***************************',
      s3_region:'us-east-2'
  }
}

当我尝试上传图像时,确实出现此错误 enter image description here

Aws::S3::Errors::AccessDenied in PhotosController#create

当我检查存储桶日志时,我得到了 enter image description here

1 个答案:

答案 0 :(得分:0)

存储桶和IAM用户是否在不同的帐户中? 如果是这样,则说明存储桶策略不正确,请选择正确的存储桶策略

{ “ Version”:“ 2012-10-17”, “ Id”:“ Policy1557294263403”, “声明”:[     {         “ Sid”:“ Stmt1557294241958”,         “效果”:“允许”,         “校长”:{             “ AWS”:“ arn:aws:iam :: 726051891502:user / borroup-admin”         },         “ Action”:“ s3:”,         “资源”:[“ arn:aws:s3 ::: borroup”,“ arn:aws:s3 ::: borroup / ”]       }     ]  }

//-> borroup / asterisk->由于某种原因,此处删除了星号符号,或者我可能不知道如何正确使用stackoverflow。

如果“用户”和“存储桶”位于同一帐户中,则该策略无关紧要,因为IAM用户具有完全权限。