我正在尝试在 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

我收到一条消息
 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

在 Ruby on Rails 应用程序中,您还可以在
以下方式:
  • 通过使用上述任何方法的配置初始值设定项脚本
    (例如 RAILS_ROOT/config/initializers/aws-sdk.rb)。
  • 通过位于 RAILS_ROOT/config/aws.yml 的 yaml 配置文件。
    这个文件的格式应该像默认的 RAILS_ROOT/config/database.yml
    文件。

  • 我相信我正在做最后一步。

    文件
    gem 'rails', '3.1.3'
    gem 'mysql'
    gem 'koala'
    gem 'paperclip'
    gem 'aws-s3'
    gem 'aws-sdk'
    

    最佳答案

    以下对我有用:

  • 在初始化程序中创建一个名为 aws.rb 的文件
  • 将以下内容放入您的 aws.rb 文件中:
    AWS.config(
    access_key_id: 'your_access_key',
    secret_access_key: 'your_secret_access_key')
    
  • 然后我的回形针选项如下所示:
    has_attached_file :photo, :styles => { :medium => "300x300>", :thumb => "100x100>" },
    :default_url => "missing_:style.png", :default_url => 'missing_:style.png', :storage =>
    :s3, :bucket => "<my_bucket>"
    
  • 关于ruby-on-rails-3 - AWS::Errors::MissingCredentialsError 在 rails 3.1 中使用回形针和 aws-s3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12223762/

    10-16 16:06