Elastic Beanstalk インスタンスシェルの環境変数を使用するにはどうすればよいですか?

最終更新日: 2021 年 8 月 25 日

AWS Elastic Beanstalk インスタンスシェルの環境変数を使用したいと考えています。

簡単な説明

Elastic Beanstalk では、環境変数はオペレーティングシステムに公開されません。

環境変数が Elastic Beanstalk の環境変数として設定されていて、オペレーティングシステムから環境変数のユーティリティを使用したい場合は、.ebextension を使用して、環境変数をオペレーティングシステムの変数にエクスポートする必要があります。

その解決方法を次に示します。

1.    get-config ユーティリティを使用して、Elastic Beanstalk 環境変数を読み取ります。

2.    jq ユーティリティ を (jq ウェブサイトから) 使用して、get-config の出力を JSON からシェル変数に変換します。

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 と呼ばれます。

2.    .ebextension ファイルを保存してから、Elastic Beanstalk 環境にデプロイします。

3.    変数がエクスポートされているかどうかをテストするには、SSH を使用してインスタンスに接続し、次のコマンドを実行します。テストする前に、既存のセッションをすべて閉じてから、SSH を使用して再接続します。

env | grep VARIABLE_NAME

重要: ステップ 3 では、VARIABLE_NAME を、ご自身の環境で定義している変数に設定します。

出力に、環境変数が正しく設定されているかどうかが表示されます。次の出力例では、RDS_PORT という変数が Elastic Beanstalk 環境で定義されています。

$ env|grep RDS_PORT
RDS_PORT=3306

注: ここでは、.ebextensionコマンドを使用しているため、sh.local ファイルの更新は新しいデプロイでのみ可能になります。環境内で変数を追加または変更する場合は、その変数をオペレーティングシステムにエクスポートする前に、新しいデプロイを作成する必要があります。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?