【问题标题】:Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank雾目录不能为空,Aws 访问密钥不能为空,Aws 秘密访问密钥不能为空
【发布时间】:2014-05-05 09:33:51
【问题描述】:

我正在使用asset_sync gem 将资产上传到 Amazon S3 存储桶。我使用 dotenv 存储我的密钥和秘密密钥,并使用 capistrano 部署到 Amazon EC2。一切都很好。

但是当我将密钥移动到服务器上的.bash_profile 并添加initializer 时,资产上传失败并出现此错误。

rake aborted!
Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank

请帮我弄清楚为什么找不到密钥/秘密。

【问题讨论】:

  • 我会导出 ENV 变量,导出 FOG_DIRECTORY=name 等

标签: ruby-on-rails amazon-s3 asset-sync


【解决方案1】:

基本上意味着您没有为您的 shell 会话设置 ENV 变量。我保证如果您运行rake assets:precompile FOG_DIRECTORY=[your_dir] AWS_ACCESS_KEY_ID=[your_access_key] AWS_SECRET_ACCESS_KEY=[secret_access],您将能够执行该操作

我现在能给出的最好建议是查看 /etc/environment VM 上的文件。如果你有这个文件,你会 能够设置每次使用的系统范围的变量 你加载你的应用

问题是分配ENVIRONMENT & SHELL variables 之间的问题 - SHELL 变量仅在特定的 shell 会话中可用,而 ENVIRONMENT 变量在整个系统中可用

我还没有找到如何动态声明特定于 shell 的变量,通过将所有环境变量放入 /etc/environment 它对我们有用

【讨论】:

  • 您好,感谢您的回答,但是在部署和 capistrano 进行预编译时会发生错误。除了这 3 个之外,我还设置了许多其他变量,并且一切正常。我将尝试使用 ENVIRONMENT 变量而不是 shell 变量。
  • 是的,这与我们遇到的问题相同 - Capistrano 无法访问您的 SHELL 变量。它正在通过 SSH 连接到您的服务器并执行操作......因此为什么 var 不可用
  • 嘿,在/etc/environment 中设置变量也不起作用
  • 多么奇怪!您可以尝试使用 SSH 登录服务器,然后使用我上面发布的 SHELL 变量执行rake assets:precompile 任务吗?如果可行,则说明您的环境有问题,否则可能是您的 rails 应用有问题
猜你喜欢
  • 2020-10-13
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 2020-06-02
  • 2020-11-28
  • 2015-12-09
相关资源
最近更新 更多