ymlファイルでアクセスキーとシークレットawsアクセスを渡さないようにするために、次を使用します。
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変数にあると思われるものをログに記録しようとしました。
config / initializers / 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\"] %>"}
すでに環境キーをロードすることになっていないのですか?これが私の問題でしょうか?