【问题标题】:CarrierWave Fog Credentials, Access DeniedCarrierWave Fog 凭据,访问被拒绝
【发布时间】:2013-07-30 02:44:26
【问题描述】:

我正在尝试将 CarrierWave 与 Amazon S3 一起使用。当我尝试通过 rake 任务上传文件时,出现此错误:

rake aborted!
Expected(200) <=> Actual(403 Forbidden)

我的 CarrierWave 初始化程序如下所示:

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: 'AWS',
    aws_access_key_id: MY_AWS_ACCESS_KEY_ID,
    aws_secret_access_key: MY_AWS_SECRET_ACCESS_KEY
  }
  config.fog_directory = MY_BUCKET
  config.fog_public = true
end

我在调试时确实设置了真实的、硬编码的密钥/秘密/存储桶值。

rake 任务看起来像这样,当我将 CarrierWave 上传器设置为使用 storage: file 在本地上传时成功:

Photo.create({
  image: File.new('lib/dummy_files/image.jpg')
})

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-s3 carrierwave fog


    【解决方案1】:

    我意识到这与新的 AWS Identity and Access Management (IAM) 有关。我创建了一个新的 IAM 用户,但我没有为该用户提供正确的权限。过去,只有一个用户,并且该用户具有管理员权限。现在您必须创建一个用户,赋予该用户正确的权限,并使用该用户的凭据。我希望这对某人有所帮助。

    【讨论】:

    • 是的,当您引入 IAM 时,它确实使事情变得更加复杂(尤其是与 admin-everything 默认凭证相比)。很高兴你能解决这个问题。
    • 我遇到了同样的问题,到处寻找解决方案!感谢分享
    • 非常感谢。我为此苦苦挣扎了一段时间,这条评论救了我。
    【解决方案2】:

    这个答案也对我有帮助......具体来说,它位于 IAM > Users > Permissions > Attach User Policy

    当您第一次创建用户时,它不会在“权限”下获得“用户政策”。一旦我附加了用户政策,一切就奏效了。

    【讨论】:

    • 你是个真正的兄弟!帮助并挽救这一天。
    • 我知道这已经过时了,但在与权限错误作斗争数小时后,您的回答救了我。为了为未来迷失的灵魂提供更多细节......为我修复它的政策被称为“AmazonS3FullAccess”。谢谢!
    【解决方案3】:

    带有 S3 的 CarrierWave 肯定会尝试更新对象的 ACL。如果 AWS S3 存储桶设置阻止了此权限(阻止所有公共访问),则carrierwave 将中止提及拒绝访问,而没有太多关于错误的信息。即使我们尝试使用 CarrierWave 的 root 用户凭据,也会发生这种情况。

    所以关闭前 2 个访问权限以允许 CarrierWave 更新 ACL。

    PS:请确保对象是私有的,除非打算公开

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2018-11-26
      • 2021-03-23
      • 2020-01-17
      • 2021-09-16
      • 1970-01-01
      • 2017-05-07
      相关资源
      最近更新 更多