AWS::Errors::MissingCredentialsError using paperclip and aws-s3 in rails 3.1

amazon-s3, ruby-on-rails-3

Solution

The following worked for me:

- Create a file in your initializers called aws.rb

Put in the following in your aws.rb file:

AWS.config(
access_key_id: 'your_access_key',
secret_access_key: 'your_secret_access_key')

Then my paperclip options looks like this:

has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" },       
:default_url => "missing_:style.png", :default_url => 'missing_:style.png', :storage =>   
:s3, :bucket => "<my_bucket>"

Problem

I am trying to upload image at aws. ``` class Asset < ActiveRecord::Base belongs_to :post attr_accessible :image has_attached_file :image, :styles => { :medium => "640x480>", :thumb => "100x100#"}, :storage => :s3, :s3_credentials => "#{Rails.root}/config/s3.yml", :path => ":attachment/:id/:style.:extension", :bucket => 'yourbucket' end ``` s3.yml ``` development: access_key_id: xxxxxxxx secret_code: xxxxx ``` I am getting a message ``` AWS::Errors::MissingCredentialsError in PostsController#create Missing Credentials. Unable to find AWS credentials. You can configure your AWS credentials a few different ways: * Call AWS.config with :access_key_id and :secret_access_key * Export AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to ENV * On EC2 you can run instances with an IAM instance profile and credentials will be auto loaded from the instance metadata service on those instances. * Call AWS.config with :credential_provider. A credential provider should either include AWS::Core::CredentialProviders::Provider or respond to the same public methods. = Ruby on Rails ``` In a Ruby on Rails application you may also specify your credentials in the following ways: Via a config initializer script using any of the methods mentioned above (e.g. RAILS_ROOT/config/initializers/aws-sdk.rb). Via a yaml configuration file located at RAILS_ROOT/config/aws.yml. This file should be formated like the default RAILS_ROOT/config/database.yml file. I believe I am doing the last step. Gemfile ``` gem 'rails', '3.1.3' gem 'mysql' gem 'koala' gem 'paperclip' gem 'aws-s3' gem 'aws-sdk' ```

Original source

Related problems