Search code examples
ruby-on-railsruby-on-rails-4amazon-s3carrierwavefog

Amazon S3 - Carrierwave Image Upload


So, I'm trying to upload an image from the Rails API to S3, using Fog.

Whenever I try to upload the image, I get this:

  Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)
  (...)
  All access to this object has been disabled

It is working in development, but once I switch to production, I receive the error above. I'm using the keys from an user I've created that set full administrative permissions to.

My carrierwave.rb: require 'carrierwave'

CarrierWave.configure do |config|

  config.fog_credentials = {
    :provider               => "AWS",
    :region                 => "us-east-1",
    :aws_access_key_id      => ENV['AWS_ACCESS_KEY_ID'],
    :aws_secret_access_key  => ENV['AWS_SECRET_ACCESS_KEY']
  }

  if Rails.env.production?  
    config.cache_dir = "#{Rails.root}/tmp/uploads"
  end

  config.fog_directory  = ENV['AWS_BUCKET']
  config.fog_public     = false
end

Any ideas? Thanks in advance! :)


Solution

  • In my case the problem was related to the ENV on Heroku. I forgot to add the REGION variable.

    So, it's worth checking if you have all your variables set correctly.