【问题标题】:Aws::S3::Errors::AccessDenied ROLLBACK 500 Internal Server ErrorAws::S3::Errors::AccessDenied ROLLBACK 500 内部服务器错误
【发布时间】:2019-09-25 20:08:12
【问题描述】:

我正在尝试使用 ruby​​ on rails 和回形针将图像上传到 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>

我确保此存储桶的所有公共访问设置都设置为 false

这是 ruby​​ on 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'
  }
}

当我尝试上传图片时,我确实收到了这个错误

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

当我检查存储桶日志时,我得到了这个

【问题讨论】:

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


    【解决方案1】:

    bucket 和 IAM 用户是否在不同的账户中? 如果是,则桶策略不正确,桶策略正确

    { “版本”:“2012-10-17”, "Id": "Policy1557294263403", “陈述”: [ { “席德”:“Stmt1557294241958”, “效果”:“允许”, “主要的”: { “AWS”:“arn:aws:iam::726051891502:user/borroup-admin” }, "动作": "s3:", "资源": ["arn:aws:s3:::borroup","arn:aws:s3:::borroup/"] } ] }

    // --> borroup/asterisk --> 出于某种原因,这里删除了星号,或者我不知道如何正确使用 stackoverflow。

    如果用户和存储桶在同一个账户中,则策略无关紧要,因为 IAM 用户具有完全权限。

    【讨论】:

    • 我将资源更新为“资源”:[“arn:aws:s3:::borroup”,“arn:aws:s3:::borroup/*”] 但仍然无法正常工作跨度>
    猜你喜欢
    • 2016-12-21
    • 2019-06-10
    • 1970-01-01
    • 2019-01-17
    • 2011-10-17
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多