在yaml文件上编码访问和秘密s3时出错



为了避免在yml文件上传递访问密钥和秘密法律访问,我使用以下命令:

development:
  bucket: development
  access_key_id: <%= ENV["S3_KEY"] %>
  secret_access_key: <%= ENV["S3_SECRET"] %>

然后在运行时得到错误

Could not log "sql.active_record" event. ArgumentError: invalid byte sequence in UTF-8
PG::Error: ERROR:  invalid byte sequence for encoding "UTF8": 0xe7 0xe3 0x6f

如果我直接在yml上写我的访问密钥和秘密,如:

development:
  bucket: development
  access_key_id: MYACCESSKEY
  secret_access_key: MYSECRETKEY

一切顺利。

为什么会出现这个错误?我怎么能修复它没有加载我的密钥和秘密到yml文件?

编辑

为了将环境变量加载到开发中,我使用了这里解释的解决方案

# Load the app's custom environment variables here, so that they are loaded before environments/*.rb
app_environment_variables = File.join(Rails.root, 'config', 'app_environment_variables.rb')
load(app_environment_variables) if File.exists?(app_environment_variables)

这可能是加载过程的问题吗?

编辑2

与此同时,我试图记录我的S3_CONFIG变量上的内容,加载了:

配置初始化/load_config.rb

S3_CONFIG = YAML.load_file("#{::Rails.root}/config/s3.yml")[Rails.env]

S3 Config: {"bucket"=>"mybucket", "access_key_id"=>"<%= ENV["S3_KEY"] %>", "secret_access_key"=>"<%= ENV["S3_SECRET"] %>"}

不是应该已经加载环境密钥了吗?这是我的问题吗?

当我从S3下载文件时发生了这个问题:

s3=AWS::S3.new(
      access_key_id: S3_CONFIG["access_key_id"],
      secret_access_key: S3_CONFIG["secret_access_key"])

S3_CONFIG["access_key_id"]只是一个字符串<%= ENV["S3_KEY"] %>

我的解决方案是使用

s3=AWS::S3.new(
      access_key_id: ENV['S3_KEY'],
      secret_access_key: ENV['S3_SECRET'])

我猜有时候在粘贴代码行之前,人们只需要了解自己在做什么…

相关内容

最新更新