0

我的 Heroku 日志出现以下错误:-

Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden) 2013-10-02T16:25:51.131316+00:00 app[web.1]: response => #"\n InvalidAccessKeyIdAWS 访问您提供的密钥 ID 在我们的记录中不存在。5CA6A058BCE5D28AQ6grl4LPNO+F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K+VolEwyGYLS3_KEY", :headers=>{"x-amz-request-id"=>"5CA6A058BCE5D28A""=>-id Q6grl4LPNO+F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K+VolEwyGYL", "Content-Type"=>"application/xml", "Transfer-Encoding"=>"chunked", "Date"=>"Wed, 02 Oct 2013 16:25:50 GMT", "连接"=>"关闭", "服务器"=>"AmazonS3"}, :status=>403, :remote_ip=>"176.32.100.200"}, @body="\nInvalidAccessKeyId您提供的 AWS 访问密钥 ID 在我们的记录中不存在。5CA6A058BCE5D28AQ6grl4LPNO+F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K+VolEwyGYL

我已经检查了 AWS 密钥至少十几次。我使用以下方法设置了 Heroku 变量:

heroku config:add S3_KEY=XXXXXXXXXXXXXXX S3_SECRET=XXXXXXXXXXXXXXXXXXXXXX

但我收到上述错误。

4

2 回答 2

1

看起来您的 AWS 访问密钥无效。需要仔细检查的几件事:

  • 您的访问密钥、秘密密钥和存储桶是否都与 AWS 控制面板中的内容匹配?

  • 您是否在您的载波初始化程序中正确设置了这些变量?您应该能够通过从heroku run rails console: 运行以下命令进行检查CarrierWave.configure { |config| puts config.fog_credentials; puts config.fog_directory }

如果您仔细检查了这些内容并且确实没有任何问题,那么您的 S3 帐户可能有一个奇怪的问题(您可以使用相同的凭据通过另一个 S3 实用程序访问您的 S3 帐户吗?),或者发生了一些疯狂的事情在你的代码中。

祝你好运!

于 2013-10-05T15:24:43.467 回答
0

我能够使用 Taavo 的建议弄清楚。我使用了 figaro gem,我确实将 AWS 凭证放入了 config/application.yml。

此外,我还更改了我的carrierwave.rb 文件:

CarrierWave.configure do |config|

  config.fog_credentials = {
    provider: "AWS",
    aws_access_key_id: "S3_KEY",
    aws_secret_access_key: "S3_SECRET",

  }
  config.cache_dir = "#{Rails.root}/tmp/uploads" 
  config.fog_directory = "S3_BUCKET_NAME"
  config.fog_public = false
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

CarrierWave.configure do |config|

  config.fog_credentials = {
    provider: "AWS",
    aws_access_key_id: ENV["S3_KEY"],
    aws_secret_access_key: ENV["S3_SECRET"],
    #region: 'Northern California'

  }
  config.cache_dir = "#{Rails.root}/tmp/uploads" 
  config.fog_directory = ENV["S3_BUCKET_NAME"]
  config.fog_public = false
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

然后将以下内容添加到 Heroku:

$ heroku config:set S3_BUCKET_NAME=your_bucket_name
$ heroku config:set S3_KEY=your_access_key_id
$ heroku config:set S3_SECRET=your_secret_access_key

那完成了工作。感谢塔沃的建议。

于 2013-10-07T02:21:58.857 回答