0

CodeDeploy を使用して Node.js アプリを EC2 にデプロイしています。認証情報を AWS Systems Manager、Parameter Store 内に保存していますが、これらをアプリケーションに公開する方法が見つかりません。

プロセス管理に PM2 を使用しています。ターゲット マシンのパラメータ ストアからパラメータを正常に取得できるため、権限の問題はありません。例えば:

aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value`

...正しい文字列を正常に返します。applicationStart.shこれをCodeDeploy ファイルで使用して、アプリを起動しようとしました。

#!/bin/bash
export LOCAL_CACHE_PATH=$(aws ssm get-parameters --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value)

pm2 start ecosystem.config.js --env production

LOCAL_CACHE_PATHundefinedにアクセスするとアプリに返されますprocess.env.LOCAL_CACHE_PATH

そのため、環境変数はスクリプト内で使用できますがapplicationStart.sh、アプリがそのスクリプトから開始されると未定義になります。

CodeDeploy で Parameter Store の環境変数を使用するための推奨されるアプローチを探しています。

同様のトピックに関する文字通り数十の投稿を読みましたが、解決できません。ガイダンスに感謝します。

4

1 に答える 1

1

私が使用している解決策は、環境変数を .env ファイルに書き込み、それをアプリで使用することです。

afterInstall.sh:

echo LOCAL_CACHE_PATH=$(aws ssm get-parameters --output text --region us-east-1 --names LOCAL_CACHE_PATH --with-decryption --query Parameters[0].Value) >> /home/ubuntu/foo/.env
于 2020-06-05T04:32:12.507 に答える