如何使用 Elastic Beanstalk 執行個體 Shell 中的環境變數?

1 分的閱讀內容
0

我想使用 AWS Elastic Beanstalk 執行個體 Shell 中的環境變數。

簡短描述

在 Elastic Beanstalk 中,環境變數不會向作業系統公開。

若要在環境變數設定為 Elastic Beanstalk 環境變數時,搭配作業系統的環境變數使用公用程式,您必須使用可將環境變數匯出為作業系統變數的 .ebextension

以下解決方案顯示如何執行此操作:

  1. 使用 get-config utility 讀取 Elastic Beanstalk 環境變數。

  2. 使用 jq utility(來自 jq 網站)將 get-config 輸出從 JSON 轉換為 Shell 變數。

  3. 將變數儲存在 /etc/profile.d/sh.local 檔案中。Bash 會讀取此檔案以將變數匯出至作業系統。

解決方案

  1. 在應用程式來源套件組合中建立一個 .ebextension 檔案,並包含以下內容:
commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local
packages:
    yum:
        jq: []

**注意:**步驟 1 中的組態檔案名稱為 setvars.config

  1. 儲存 .ebextension 檔案,然後將其部署到您的 Elastic Beanstalk 環境中。

  2. 若要測試是否正在匯出變數,請使用 SSH 連線至執行個體,然後執行下列命令。測試之前,請關閉任何現有的工作階段,然後使用 SSH 重新連線。

env | grep VARIABLE_NAME

**重要事項:**在步驟 3 中,請將 VARIABLE_NAME 設定為在環境中定義的變數。

輸出會顯示您的環境變數是否設定正確。在下面的範例輸出中,已在 Elastic Beanstalk 環境中定義一個名為 RDS_PORT 的變數。

$ env|grep RDS_PORT
RDS_PORT=3306

注意:由於您正在使用 .ebextension 上的命令,因此只能使用新的部署更新 sh.local 檔案。如果在環境中新增或變更變數,則必須在將變數匯出至作業系統前建立新部署。


AWS 官方
AWS 官方已更新 2 年前