簡體   English   中英

Rails 生產控制台無法在 AWS Elastic Beanstalk Amazon Linux 上檢索環境變量 2

[英]Rails production console unable to retrieve env variables on AWS Elastic Beanstalk Amazon Linux 2

作為彈性 beanstalk 環境的一部分,我一直在嘗試訪問我的 ec2 實例上的生產控制台。 我實際上可以訪問控制台,但是當我查詢 object 時,例如。 “Wager.all”,它給了我這個錯誤:

[root@ip-10-0-1-146 config]# bundle exec rails c -e production 加載生產環境 (Rails 5.2.4.2) irb(main):001:0> Wager.all Traceback (最近一次調用最后一次) : PG::ConnectionBad (fe_sendauth: 未提供密碼)

這是我的 database.yml 文件(生產配置是要查看的):

 default: &default adapter: postgresql encoding: UTF-8 host: 'localhost' pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %> test: <<: *default development: <<: *default url: <%= ENV['DATABASE_URL'] %> database: <%= ENV['RDS_DB_NAME'] %> username: <%= ENV['RDS_USERNAME'] %> password: <%= ENV['RDS_PASSWORD'] %> host: <%= ENV['RDS_HOSTNAME'] %> port: <%= ENV['RDS_PORT'] %> production: <<: *default url: <%= ENV['DATABASE_URL'] %> database: <%= ENV['RDS_DB_NAME'] %> username: <%= ENV['RDS_USERNAME'] %> password: <%= ENV['RDS_PASSWORD'] %> host: database-1.c76xg56p4vkw.us-east-2.rds.amazonaws.com port: 5432

之前,我將主機和端口選項設置為環境變量,但它失敗了,因為它甚至無法連接到主機。 現在我已經硬編碼了它,它在需要我的密碼的部分失敗了。 我可以通過對所有內容進行硬編碼來使其工作,但我想使用環境變量。

即使我在彈性 beantalk 控制台中設置了環境變量,rails 控制台似乎也無法檢索它們。 但是,應用程序在部署期間似乎正在訪問這些變量,因為它可以連接到我的數據庫。

我嘗試過的事情:

運行 'erb config/database.yml' 以查看 erb 是否可以識別這些值。 它為我在 <%= %> 中指定的所有字段返回空白值。 所以 'password: <%= ENV['RDS_PASSWORD']' %> 將是 output 就像 'password: '。

我參考了這個AWS 文檔來設置我的 database.yml 文件

致電 AWS 客戶支持,我們確認該實例似乎確實了解環境變量。 此命令“/opt/elasticbeanstalk/bin/get-config environment”正確輸出所有環境變量。 但是,支持人員對 Rails 了解不多,因此無法進一步幫助我。

ruby 2.5.8p224(2020-03-31 修訂版 67882)[x86_64-linux]

我也遇到了這個問題一段時間。 事實證明,Amazon Linux 2 之前的 Amazon Linux AMI 平台版本已將環境變量提供給用戶的 bash。

您可以通過在 .ebextensions 文件中添加以下內容來恢復此過程並允許自己進入 rails 控制台:

commands:
  setvars:
    command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
  yum:
    jq: []

這會將您的 ENV 變量加載到每個用戶的 bash 中。 然后,您可以通過運行命令echo $MY_ENV_VARIABLE來調用這些變量(就像在以前的 AMI 版本中一樣)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM