I am uploading my file to s3's private bucket using carrierwave whose policy is 'Bucket and Object are not public'.
Now when I try to generate an access url with @docuemnt.pdf_file.url for my object in that private bucket I am getting an error which says " bucket_name is required " even after passing bucketname as @docuemnt.pdf_file.url 'privatebucketname' I get an error which says " ArgumentError: Version privatebucketname doesn't exist! ".
How am i supposed to get url to access private bucket object from within my rails app using carrier-wave.
My uploader code is as follows:
class SecureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def fog_directory
ENV['AWS_SECURED_BUCKET']
end
def fog_public
false
end
def fog_authenticated_url_expiration
1.minutes # in seconds from now, (default is 10.minutes)
end
end
My carrierwave config is as follows:
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV['AWS_KEY'],
aws_secret_access_key: ENV['AWS_SECRET'],
region: ENV['AWS_REGION']
}
# For testing, upload files to local `tmp` folder.
if Rails.env.test? || Rails.env.cucumber?
config.storage = :file
config.enable_processing = false
config.root = "#{Rails.root}/tmp"
else
config.storage = :fog
end
config.cache_dir = "#{Rails.root}/tmp/uploads" # To let CarrierWave work on Heroku
config.fog_directory = ENV['AWS_BUCKET']
end