翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Elastic Beanstalk は、インスタンスのブートストラップ中に AWS Secrets Manager および AWS Systems Manager Parameter Store から値を取得し、アプリケーションが使用する環境変数に割り当てることができます。
以下のポイントは、環境変数をシークレットとして使用するための設定、同期、アクセスをまとめたものです。
-
シークレットを保存する環境変数を設定するには、シークレットとパラメータの Amazon リソースネーム (ARNs) を指定します。
-
Secrets Manager または Systems Manager パラメータストアでシークレット値を更新またはローテーションする場合は、環境変数を手動で更新する必要があります。
-
シークレット環境変数は、ebextension コンテナコマンドとプラットフォームフックで使用できます。
サポートされるプラットフォームのバージョン
2025 年 3 月 26 日以降にリリースされたプラットフォームバージョンは、環境変数として設定された AWS Secrets Manager シークレットと Parameter Store AWS Systems Manager パラメータをサポートしています。
注記
Docker および ECS ベースの Docker プラットフォームを除き、Amazon Linux 2 プラットフォームバージョンは複数行変数値をサポートしていません。複数行変数のサポートの詳細については、「」を参照してください複数行の値。
トピック
料金
Secrets Manager と Systems Manager パラメータストアの使用には、標準料金が適用されます。料金の詳細については、以下のウェブサイトを参照してください。
-
AWS Systems Manager 料金
(コンテンツリストから Parameter Store を選択)
Elastic Beanstalk では、アプリケーションが環境変数を介して環境シークレットを参照するための料金は発生しません。ただし、Elastic Beanstalk がユーザーに代わってこれらのサービスに対して行うリクエストには、標準料金が適用されます。
シークレットを Elastic Beanstalk 環境変数として設定する
Elastic Beanstalk コンソール、 の設定ファイル.ebextensions
、 AWS CLI、および AWS SDK を使用して、シークレットとパラメータを環境変数として設定できます。
前提条件
シークレットを参照するように環境変数を設定する前に、まず次のステップを完了する必要があります。
環境変数設定前の一般的な手順
-
Secrets Manager シークレットまたは Parameter Store パラメータを作成して、機密データを保存します。詳細については、次のトピックの 1 つまたは両方を参照してください。
-
でのシークレットの作成 Secrets Manager を使用してシークレットを作成および取得する
-
でのパラメータの作成 Systems Manager パラメータストアを使用してパラメータを作成および取得する
-
-
シークレットとパラメータを取得するために、環境の EC2 インスタンスに必要な IAM アクセス許可を設定します。詳細については、「必要な IAM 許可」を参照してください。
コンソールを使用する
Elastic Beanstalk コンソールを使用して、シークレットを環境変数として設定できます。
Elastic Beanstalk コンソールでシークレットを環境変数として設定するには
Elastic Beanstalk コンソール
を開き、リージョンリストで を選択します AWS リージョン。 -
ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。
注記
環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。
ナビゲーションペインで、[設定] を選択します。
-
[更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。
-
Runtime 環境変数まで下にスクロールします。
-
環境変数の追加 を選択します。
-
ソース で Secrets Manager または SSM パラメータストアを選択します。
注記
ドロップダウンのプレーンテキストオプションの詳細については、「」を参照してください環境プロパティ (環境変数) の設定。
-
環境変数名 シークレットまたはパラメータ値を保持する環境変数の名前を入力します。
-
環境変数値には、Systems Manager パラメータストアパラメータの ARN または Secrets Manager シークレットを入力します。インスタンスのブートストラップ中に、Elastic Beanstalk はステップ 8 で入力した変数の値を、この ARN リソースに保存されている値に開始します。
コンソールは、入力した値が、ステップ 7 で選択したストアの有効な ARN 形式であるかどうかを検証します。ただし、ARN で指定されたリソースの存在や、ARN にアクセスするために必要な IAM アクセス許可があるかどうかは検証されません。
-
さらに変数を追加する必要がある場合は、ステップ 6 からステップ 9 を繰り返します。
-
ページの最下部で [適用] を選択し変更を保存します。
.ebextensions のファイルを使用した設定
Elastic Beanstalk 設定ファイルを使用して、シークレットを環境変数として設定できます。aws:elasticbeanstalk:application:environmentsecrets 名前空間を使用して環境プロパティを定義します。
例 環境シークレットの .ebextensions/options.config (短縮構文)
option_settings:
aws:elasticbeanstalk:application:environmentsecrets
:MY_SECRET
:arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret
MY_PARAMETER
:arn:aws:ssm:us-east-1:111122223333:parameter/myparam
例 環境シークレットの .ebextensions/options.config (標準構文)
option_settings: - namespace:
aws:elasticbeanstalk:application:environmentsecrets
option_name:MY_SECRET
value:arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret
- namespace:aws:elasticbeanstalk:application:environmentsecrets
option_name:MY_PARAMETER
value:arn:aws:ssm:us-east-1:111122223333:parameter/myparam
を使用した設定 AWS CLI
AWS コマンドラインインターフェイス (AWS CLI) を使用して、シークレットを Elastic Beanstalk 環境変数として設定できます。このセクションでは、 aws:elasticbeanstalk:application:environmentsecrets名前空間を使用した create-environment コマンドと update-environment コマンドの例を示します。
次の 2 つの例では、create-environment コマンドを使用して、シークレットと環境変数として設定されたパラメータを、コマンドが作成する新しい環境に追加します。Elastic Beanstalk がこの環境の EC2 インスタンスをブートストラップすると、シークレットに対して取得する値と、Secrets Manager および Systems Manager パラメータストアのそれぞれの ARNs から取得した パラメータを使用して環境変数が初期化されます。
例 環境変数として設定されたシークレットを持つ create-environment の (名前空間オプションをインラインで)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"
\ --option-settings \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_SECRET,Value=arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret
\ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_PARAMETER,Value=arn:aws:ssm:us-east-1:111122223333:parameter/myparam
別の方法として、options.json
ファイルを使用して、インラインで名前空間オプションを含めるのではなく、名前空間オプションを指定します。
例 環境変数として設定されたシークレットを含む create-environment の ( options.json
ファイルの名前空間オプション)
aws elasticbeanstalk create-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"
\ --option-settingsfile://options.json
### example options.json ###
[
{
"Namespace": "aws:elasticbeanstalk:application:environmentsecrets",
"OptionName": "MY_SECRET",
"Value": "arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret"
},
{
"Namespace": "aws:elasticbeanstalk:application:environmentsecrets",
"OptionName": "MY_PARAMETER",
"Value": "arn:aws:ssm:us-east-1:111122223333:parameter/myparam"
}
]
次の 2 つの例では、update-environment コマンドを使用して、環境変数として設定されたシークレットとパラメータを既存の環境に追加します。Elastic Beanstalk がこの環境の EC2 インスタンスをブートストラップすると、シークレットに対して取得する値と、Secrets Manager および Systems Manager パラメータストアのそれぞれの ARNs から取得した パラメータを使用して環境変数が初期化されます。
例 環境変数として設定されたシークレットを使用した更新環境の (名前空間オプションをインライン)
aws elasticbeanstalk update-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"
\ --option-settings \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_SECRET,Value=arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_PARAMETER,Value=arn:aws:ssm:us-east-1:111122223333:parameter/myparam
別の方法として、options.json
ファイルを使用して、インラインで名前空間オプションを含めるのではなく、名前空間オプションを指定します。
例 環境変数として設定されたシークレットを持つ update-environment の ( options.json
ファイル内の名前空間オプション)
aws elasticbeanstalk update-environment \ --region
us-east-1
\ --application-namemy-app
\ --environment-namemy-env
\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 20"
\ --option-settingsfile://options.json
### example options.json ###
[
{
"Namespace": "aws:elasticbeanstalk:application:environmentsecrets",
"OptionName": "MY_SECRET",
"Value": "arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret"
},
{
"Namespace": "aws:elasticbeanstalk:application:environmentsecrets",
"OptionName": "MY_PARAMETER",
"Value": "arn:aws:ssm:us-east-1:111122223333:parameter/myparam"
}
]
AWS SDK を使用した設定
AWS SDKs を使用して、シークレットとパラメータを環境変数として設定できます。前のセクションで説明した update-environment
および create-environment
AWS CLI コマンドと同様に、CreateEnvironment および UpdateEnvironment API アクションを使用できます。OptionSettings
リクエストパラメータを使用して、aws:elasticbeanstalk:application:environmentsecrets名前空間のオプションを指定します。
Elastic Beanstalk 環境変数とのシークレット同期のベストプラクティス
このトピックでは、アプリケーションが Secrets Manager または Systems Manager パラメータストアで環境シークレットを使用するためのベストプラクティスを推奨します。シークレットストアデータが更新またはローテーションされた場合、Elastic Beanstalk アプリケーションは更新された値を自動的に受信しません。Elastic Beanstalk は、インスタンスのブートストラップ時にのみシークレットを環境変数にプルします。
環境変数の更新
Elastic Beanstalk 環境をトリガーしてシークレットストアからシークレットの最新の値を再取得するには、 UpdateEnvironment
または RestartAppServer
オペレーションを実行することをお勧めします。これらのオペレーションは、Elastic Beanstalk コンソール、 AWS CLI、または Elastic Beanstalk API を使用して実行できます。詳細については、AWS CLI 「Elastic Beanstalk の例」またはAWS Elastic Beanstalk 「 API リファレンス」を参照してください。
シークレット同期に対する自動スケーリング効果の管理
シークレットストアの更新後にスケールアウトイベントまたはインスタンスの置き換えが発生した場合、新しいインスタンスには Secrets Manager または Systems Manager パラメータストアからの最新のシークレット値が含まれます。このようなイベントは、環境内の他のすべてのインスタンスが新しいシークレットを取得するために更新されていない場合でも発生する可能性があります。
重要
アプリケーションが同じ環境変数に対して 2 つの異なるシークレット値を使用できるようにする必要があります。これにより、Secrets Manager または Systems Manager パラメータストアでシークレットの更新が発生し、その後、環境でスケールアウトまたはインスタンスの置き換えが行われるイベントに対応できます。他のインスタンスは環境変数の更新を保留中です。更新の待機期間中、すべての環境インスタンスがシークレットストア環境変数に対して同じ値を持つわけではありません。
このようなユースケースの例は、データベース認証情報のローテーションです。スケールアウトイベントが認証情報のローテーションに続く場合、新しくブートストラップされたインスタンスによって参照される環境シークレットには、更新されたデータベース認証情報が含まれます。ただし、既存のインスタンスによって参照される環境シークレットは、 UpdateEnvironment
または RestartAppServer
オペレーションによって更新されるまで古い値を保持します。
Amazon Linux 2 環境変数の複数行の値
複数行の値は複数の行で構成され、改行文字が含まれます。Docker および ECS ベースの Docker プラットフォームを除き、Amazon Linux 2 で実行されるプラットフォームは、環境変数の複数行値をサポートしていません。
注記
マルチライン値を検出すると、Elastic Beanstalk は影響を受ける環境のデプロイに失敗します。
以下のオプションは、複数行の問題の回避策または解決策として役立ちます。
-
Amazon Linux 2 環境を Amazon Linux 2023 にアップグレードします。詳細については、「Amazon Linux 2 から Amazon Linux 2023 への移行」を参照してください。
-
シークレット値から改行文字を削除します。1 つの方法としては、値をシークレットストアに保存する前に Base64 でエンコードする方法があります。その後、アプリケーションは環境シークレット変数から参照するときに、値を元の形式にデコードする必要があります。
-
Secrets Manager または Systems Manager パラメータストアから直接データを取得するようにアプリケーションコードを設計します。詳細については、「 でのシークレットの取得Secrets Manager の使用」または「パラメータの取得」を参照してくださいSystems Manager パラメータストアの使用。