Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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::S3::错误::InvalidAccessKeyId_Ruby On Rails_Ruby On Rails 4_Amazon Web Services_Amazon S3 - Fatal编程技术网

Ruby on rails AWS::S3::错误::InvalidAccessKeyId

Ruby on rails AWS::S3::错误::InvalidAccessKeyId,ruby-on-rails,ruby-on-rails-4,amazon-web-services,amazon-s3,Ruby On Rails,Ruby On Rails 4,Amazon Web Services,Amazon S3,因此,我正在运行rake db:drop db:create db:migrate db:seed,出于某种原因,我得到以下错误: AWS::S3::Errors::InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records. 请记住,大多数迁移都是运行的,但是,我似乎在这次迁移之后直接遇到了错误: 20140606122523 CreateActiveAdminComments:

因此,我正在运行rake db:drop db:create db:migrate db:seed,出于某种原因,我得到以下错误:

AWS::S3::Errors::InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
请记住,大多数迁移都是运行的,但是,我似乎在这次迁移之后直接遇到了错误:

 20140606122523 CreateActiveAdminComments: migrated (0.8930s) ===============
我已将所有更新的密钥保存在相应的文件中,如下所示:

config/aws.yml:

defaults: &defaults
  access_key_id: '*key here*'
  secret_access_key: '*key here*'
  bucket_name: '*bucket name*'

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults
我做错了什么?我已经对密钥进行了双重和三重检查,甚至尝试生成新的密钥。。仍然得到相同的错误


请帮忙

迁移

在评论中讨论之后,问题是迁移引用了
回形针
,它使用了
S3
设置。为了修复迁移,OP必须从
config/application.rb
中删除
回形针
S3设置,以允许迁移继续进行

--

环境变量

ENV
vars略有不同

奇怪的是,你怎么会尝试在
应用程序中设置它们。rb
——从本质上讲,它们应该驻留在操作系统中——让你的应用程序和系统的其他部分可以访问它们。这只是另一个安全功能,有助于保持数据的安全性和模块化

您遇到的问题是在开发中设置ENV vars是关于将变量放在机器上,而且Rake也不会加载它们,除非它们在操作系统级别可用

您需要的解决方案有两个方面:

--

Rails 4.1.0引入了secrets.yml来帮助解决这个问题:

Rails 4.1在config文件夹中生成一个新的secrets.yml文件。通过 默认情况下,此文件包含应用程序的密钥库,但 也可用于存储其他机密,例如用于 外部API

#config/secrets.yml
如果升级到Rails 4.1,将得到一个“secrets.yml”文件,该文件如下所示:
#修改此文件时,请确保重新启动服务器。
#您的密钥用于验证已签名Cookie的完整性。
#如果更改此密钥,所有旧签名cookie都将无效!
#确保秘密至少是30个字符,并且都是随机的,
#没有常规单词,否则您将面临字典攻击。
#您可以使用“rake secret”生成安全密钥。
#确保此文件中的机密是保密的
#如果你公开分享你的代码。
发展:
秘密钥匙底座:[盐]
#不要在存储库中保留生产机密,
#而是从环境中读取值。
制作:
机密密钥库:
您可以将API密钥放在其中,然后使用
Rails.application.secrets.some\u API\u key

--

费加罗

另一种同样有效的方法是使用。这与
secrets.yml
有点多余,但无论如何,它创建了一个
application.yml
,然后您可以使用直接
ENV[“setting”]
var引用它


无论哪种方法都可以解决你的问题

你能发布迁移的内容吗?为什么您会通过
S3
收到此错误-这不包含数据库,对吗?正确。。迁移内容是标准的。。这就是为什么这么奇怪。它不是指回形针或任何其他需要
s3
的依赖项,是吗?事实上你说得很对。。它是。它有一行:“添加附件:滑块,:图像”啊。您是否尝试取消设置您的
回形针
S3
设置?因此,迁移将起作用-然后我们可以对S3连接进行排序?
AWS.config(YAML.load_file(Rails.root.join("config/aws.yml"))[Rails.env])
#config/secrets.yml
If you upgrade to Rails 4.1, you'll get a `secrets.yml` file which will look like this:
# Be sure to restart your server when you modify this file.

# Your secret key is used for verifying the integrity of signed cookies.
# If you change this key, all old signed cookies will become invalid!

# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
# You can use `rake secret` to generate a secure secret key.

# Make sure the secrets in this file are kept private
# if you're sharing your code publicly.

development:
  secret_key_base: [a salt]

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>