Ruby on rails 3 AWS::S3::签名与rails中的AWS-S3不匹配

Ruby on rails 3 AWS::S3::签名与rails中的AWS-S3不匹配,ruby-on-rails-3,rubygems,amazon-s3,paperclip,Ruby On Rails 3,Rubygems,Amazon S3,Paperclip,我正在尝试将数据上传到amazon s3 bucket。 为此,我正在使用aws-s3 gem。 我正在提供正确的访问密钥和安全密钥,但仍然无法执行S3Object.store/Bucket调用,尽管已建立连接。它们返回错误“AWS::S3::SignatureDesNotMatch:我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。” 有趣的是,我正在运行另一个带有回形针插件的rails应用程序,将图像上传到S3,这就像一个魅力!使用相同的访问密钥和安全密钥 我试着引用一些提到

我正在尝试将数据上传到amazon s3 bucket。 为此,我正在使用aws-s3 gem。 我正在提供正确的访问密钥和安全密钥,但仍然无法执行S3Object.store/Bucket调用,尽管已建立连接。它们返回错误“AWS::S3::SignatureDesNotMatch:我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。”

有趣的是,我正在运行另一个带有回形针插件的rails应用程序,将图像上传到S3,这就像一个魅力!使用相同的访问密钥和安全密钥

我试着引用一些提到同样问题的链接,但没有成功。 []


任何提示/帮助/建议都很好。:)

我刚刚遇到这个问题,因为我没有在请求中提供正确的区域

根据railscast,我正在使用
fog
Carrierwave
,并且我必须在配置/初始值设定项中为
Carrierwave

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     '[redacted]',       # required unless using use_iam_profile
    aws_secret_access_key: '[redacted]', # required unless using use_iam_profile
    # use_iam_profile:       false,                         # optional, defaults to false
    region:                'eu-central-1',                  # optional, defaults to 'us-east-1'
    # host:                  's3.example.com',             # optional, defaults to nil
    # endpoint:              'https://s3.example.com:8080' # optional, defaults to nil
  }
  config.fog_directory  = 'xxx'                                      # required
  # config.fog_public     = false                                                 # optional, defaults to true
  # config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } # optional, defaults to {}
end
有趣的是,amazon将fog重定向到具有正确区域的正确端点,但是,重定向的请求在身份验证上失败,在这种情况下,fog可能有问题。雾确实在日志中给出了一个很好的警告

[fog][WARNING]fog:随后重定向到calm4-files.s3.amazonaws.com,连接到匹配区域将更有效


但更准确地说,他们应该说,
不仅性能更好,而且它实际上也可以工作

我遇到这个问题是因为我没有在请求中提供正确的区域

根据railscast,我正在使用
fog
Carrierwave
,并且我必须在配置/初始值设定项中为
Carrierwave

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',                        # required
    aws_access_key_id:     '[redacted]',       # required unless using use_iam_profile
    aws_secret_access_key: '[redacted]', # required unless using use_iam_profile
    # use_iam_profile:       false,                         # optional, defaults to false
    region:                'eu-central-1',                  # optional, defaults to 'us-east-1'
    # host:                  's3.example.com',             # optional, defaults to nil
    # endpoint:              'https://s3.example.com:8080' # optional, defaults to nil
  }
  config.fog_directory  = 'xxx'                                      # required
  # config.fog_public     = false                                                 # optional, defaults to true
  # config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } # optional, defaults to {}
end
有趣的是,amazon将fog重定向到具有正确区域的正确端点,但是,重定向的请求在身份验证上失败,在这种情况下,fog可能有问题。雾确实在日志中给出了一个很好的警告

[fog][WARNING]fog:随后重定向到calm4-files.s3.amazonaws.com,连接到匹配区域将更有效

但更准确地说,他们应该说,
不仅性能更好,而且它实际上也会起作用