相关疑难解决方法(0)

尝试设置亚马逊的S3存储桶:403禁止错误和设置权限

我正在关注Hartl的railstutorial.org并且已经到了11.4.4:生产中的图像上传.我做了什么:

  • 注册亚马逊网络服务
  • 在Amazon Identity and Access Management中,我创建了一个用户.用户已成功创建.
  • 在Amazon S3中,我创建了一个新存储桶.
  • 设置新存储桶的权限:

权限: 本教程指示"授予对上一步中创建的用户的读写权限".但是,在存储桶的"Permissons"下,未提及新用户的名称.我只能选择Everyone,Authenticated用户,Log delivery,Me和用户名,亚马逊似乎已经从我的名字+数字创建了自己.我通过选择Authenticated用户并选中上传/删除和查看权限(而不是选择列表和编辑权限)框来尝试它.我也通过选择Everyone并检查所有四个框来尝试它.结果是一样的.

  • 我按照本教程的说明在我的Rails应用程序中实现(我不相信那里有任何错误,所以我没有在这里包含这些步骤,以免使它太长).

初始化carrier_wave.rb程序设置为以下代码.我已经添加region: 'eu-west-1'到初始化器(我从这里得到的一个想法)去除消息connecting to the matching region will be more performant.

if Rails.env.production?
  CarrierWave.configure do |config|
    config.fog_credentials = {
      # Configuration for Amazon S3
      :provider              => 'AWS',
      :aws_access_key_id     => ENV['S3_ACCESS_KEY'],           # Set these key's using heroku config:set S3_ACCESS_KEY=<access key>
      :aws_secret_access_key => ENV['S3_SECRET_KEY'],
      :region                => 'eu-west-1'
    }
    config.fog_directory     =  ENV['S3_BUCKET']
  end
end
Run Code Online (Sandbox Code Playgroud)
  • 它在开发中工作,我推到了Heroku.

错误: 在生产中使用上传器上传图像时,我收到错误We're sorry, but …

ruby ruby-on-rails amazon-s3 amazon-web-services railstutorial.org

5
推荐指数
2
解决办法
8404
查看次数

为Amazon S3编写IAM策略和CORS配置

我对这一切都很陌生但是能够在我的Rails应用程序中使用头像/图像上传器.用户可以将新的头像上传到我的S3存储桶,并且在web应用程序中显示头像.

为此,我不得不向用户授予"AmazonS3FullAccess"政策.这看起来有点太多了,因为来自应用程序的用户只需要写入(上传他的头像)并阅读(在网页上显示头像)权限.

您是否同意编写自定义策略而不是使用AmazonS3FullAccess更好?如果是这样,我已经尝试了下面的政策代码(从这里采用),但这不起作用(尝试上传头像图像时出现403 Forbidden错误).有任何建议如何更正此代码?

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::mybucket"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::mybucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

cloud ruby-on-rails amazon-s3 amazon-web-services amazon-iam

4
推荐指数
1
解决办法
2469
查看次数

使用Amazon S3进行载波上传-403禁止的错误

我试图在我的Rails应用程序中将Carrierwave与Amazon S3结合使用,但不断出现错误

"Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)."  
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.
Run Code Online (Sandbox Code Playgroud)

我也收到警告

"[WARNING] fog: the specified s3 bucket name() is not a valid dns name, which will negatively impact performance.  For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/BucketRestrictions.html"  
Run Code Online (Sandbox Code Playgroud)

config / initializers / carrierwave.rb:

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: 'AWS',                      
    aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
    aws_secret_access_key: ENV["AWS_ACCESS_KEY"]
  }
  config.fog_directory = ENV["AWS_BUCKET"]                
end
Run Code Online (Sandbox Code Playgroud)

我的存储桶名称是“ buildinprogress”

我仔细检查了我的访问密钥ID和访问密钥是否正确。

如何解决此错误?

ruby-on-rails amazon-s3 carrierwave

1
推荐指数
1
解决办法
2623
查看次数