Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AWS::Errors::丢失凭证位置错误控制器#使用回形针和AWS Gem创建_Ruby On Rails_Amazon Web Services_Amazon S3 - Fatal编程技术网

Ruby on rails AWS::Errors::丢失凭证位置错误控制器#使用回形针和AWS Gem创建

Ruby on rails AWS::Errors::丢失凭证位置错误控制器#使用回形针和AWS Gem创建,ruby-on-rails,amazon-web-services,amazon-s3,Ruby On Rails,Amazon Web Services,Amazon S3,我在LocationsController#使用回形针和AWS gem创建时遇到以下错误AWS::Errors::MissingCredentialsError 有关例外情况的更多详细信息: Missing Credentials. Unable to find AWS credentials. You can configure your AWS credentials a few different ways: * Call AWS.config with :access_key_id

我在LocationsController#使用回形针和AWS gem创建时遇到以下错误AWS::Errors::MissingCredentialsError

有关例外情况的更多详细信息:

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 * 
我目前正在我的机器上的开发环境中运行此代码,这里是development.rb

  Gmaps::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # Raise exception on mass assignment protection for Active Record models
  config.active_record.mass_assignment_sanitizer = :strict

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  config.active_record.auto_explain_threshold_in_seconds = 0.5

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

  # Amazon S3 settings for Paperclip uploads
Paperclip::Attachment.default_options.merge!({  
storage: :s3 ,
s3_credentials: {
  access_key_id:  ENV['key_id'],
  secret_access_key:  ENV['key'],
    bucket:  "#{ENV['bucket']}-#{Rails.env}"
    },
    url: ":s3_domain_url",
   path: "/:class/:attachment/:id_partition/:style/:filename"
    })
end
这是我的模型

class Location < ActiveRecord::Base
    geocoded_by :address
    after_validation :geocode

      has_attached_file :picture,
        :styles => { :medium => "300x300>", :thumb => "100x100>" }
end
类位置{:medium=>“300x300>”,:thumb=>“100x100>”}
结束

感谢您花时间查看此

它显然找不到您的S3凭据。我在回形针文档中找不到任何地方,上面说应该在应用程序配置中指定S3凭据

通常,您可以将其放入如下所述的模型中:

与此相关的几个线程可能会有所帮助:

尝试只使用AWS Gem 我希望您尝试仅使用AWS Gem配置,并查看凭据是否有效:

config/initializers/aws.rb 然后打开控制台并尝试以下操作:

bundle exec rails c
S3.objects.first
输出是什么


基本上,先让这项工作开始,然后再处理回形针宝石的抽象。

我的解决办法是重新排列宝石在gemfile中的顺序:

gem'aws sdk'
必须在
gem'paperclip'之前

这个:

gem 'aws-sdk'
gem 'paperclip'
gem 'paperclip'
gem 'aws-sdk'
不是这个:

gem 'aws-sdk'
gem 'paperclip'
gem 'paperclip'
gem 'aws-sdk'

幸运地发现了这一点。

感谢您的关注。我尝试了上面的链接,但没有任何运气。看起来他们都在做同样的事情。我确实在没有任何LuckId的情况下尝试了上述建议。您是否尝试将凭据设置为en环境变量?就像这里一样:我想如果没有luckI想要添加的任何新sdk,您将不得不使用Aws.config.update({}),因为config不再是一种方法,而是一种散列。我觉得更奇怪的是,首选的方法应该是在模型中添加creds。这与模型无关,如果您在多个模型中进行上传,会怎么样?