2

すべてがローカルで期待どおりに機能しています。heroku にプッシュすると、画像をアップロードできなくなります。

heroku ログから取得したエラー コードは次のとおりです。 Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)

XML 応答には以下が含まれます。<Code>AccessDenied</Code><Message>Access Denied</Message>

私のfog.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => ENV["ACCESS_KEY_ID"],
    :aws_secret_access_key  => ENV["SECRET_ACCESS_KEY"]
    #:region                 => 'eu-west-1'
  }

  #Required for Heroku
  config.cache_dir = "#{Rails.root}/tmp/uploads"

  config.fog_directory = ENV["BUCKET_NAME"]

end

私のアップローダ:

class ImageUploader < CarrierWave::Uploader::Base
    storage :fog
    def store_dir 
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
end

Heroku には正しい環境変数があります。私はfigarogem を使用しました。また、最初の数回 403 を取得した後、figaroエラーがないことを確認するために手動で設定しました。

これは地域の問題かもしれないと思いましたが、私のバケットは米国であり、キャリアウェーブのドキュメントによると、デフォルトはus-east-1

ローカルではなく、Heroku で問題を引き起こしているのは何ですか?

4

1 に答える 1

2

Forbidden は、(他の資格情報ではなく) 構成されたディレクトリに問題があることを意味する場合があります。BUCKET_NAMEローカルと Heroku の両方で同じ値を使用していますか? まだ作成していない別のバケットで物事を使用しようとしたことは確かです(これにより、このエラーが発生する可能性もあります)。したがって、値を確認することは期待どおりであり、バケットが既に存在することを確認することは、いくつかの良い出発点です。それでも問題が解決しない場合は、喜んで話し合い、支援を続けてください。

于 2013-08-23T18:47:37.930 に答える