【问题标题】:Aws::S3::Errors::AccessDenied: Access DeniedAws::S3::Errors::AccessDenied:拒绝访问
【发布时间】:2017-11-30 11:06:11
【问题描述】:

我正在尝试使用 Aws-S3 gem 将文件上传到 S3。

s3 = Aws::S3::Resource.new(
 credentials: Aws::Credentials.new('XXX', 'XXX'),  
region: 'us-east-1') 

obj = s3.bucket('bucket-name').object('key')

obj.upload_file('/Users/saghosh/Downloads/projecttimeline_Dec 2017_MajorprojectN.pdf',acl:'public-read')

但每次它都给我 Aws::S3::Errors::AccessDenied: 拒绝访问。

但如果我想给予

s32 = Aws::S3::Client.new(
  access_key_id: 'XXX',
  secret_access_key: 'XXX',
  region: 'us-east-1'
)
 s32.list_objects({bucket: 'bucket-name'})

它工作正常并列出了我所有手动上传的文件。 这似乎是一个权限问题,但无法弄清楚问题出在哪里?

【问题讨论】:

    标签: ruby-on-rails amazon-s3 ruby-on-rails-5.1


    【解决方案1】:

    附加到您使用的访问/密钥的 IAM 策略可能存在问题。确保已授予适当的 S3 权限,以便通过 SDK 执行操作。

    【讨论】:

    【解决方案2】:

    由于帐户权限,您收到此错误 试试

        :s3_permissions => 'public-read'
    :s3_permissions => 'private'
    
    
     config.paperclip_defaults = {
       :storage => :s3,
       :s3_permissions => 'public-read',
       :s3_credentials => {
        :bucket => "",
        :access_key_id => "",
        :secret_access_key => "",
        :s3_region => "us-east-1"
      }
    }
    

    【讨论】:

      【解决方案3】:

      您的系统时间也可能有问题。

      只需在 Google 上搜索“Aws::S3::Errors::RequestTimeTooSkewed”。

      S3 生成的 url 包含时间,并根据生成它的系统时间而过期。 这里可能的解决方案: https://www.howtogeek.com/tips/how-to-sync-your-linux-server-time-with-network-time-servers-ntp/

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 1970-01-01
        • 2020-09-23
        • 2019-06-10
        • 2017-12-24
        • 2021-11-06
        • 2020-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多