概要
App Runner 環境変数のソースとして AWS Secrets Manager と AWS SSM Parameter Store を指定することが出来るようになったよ。
やってみた
下記のブログを参考に動作を確認してみました。
サンプルコードのクローン
git clone https://github.com/aws-samples/apprunner-hotel-app
必要なリソースのデプロイ
先程クローンしてきたファイルの中にある infra.yaml
を使って CloudFormation スタックを作成してください。
CloudFormation の [出力] タブで、
DBSecret
(Secrets Manager に保存)
HotelName
(SSM Parameter Store に保存)
を控えておきましょう。(後で使う)
※ infra.yaml
の以下が該当する箇所です。
Outputs:
DBSecret:
Description: AWS Secrets Manager secret containing DB credentials
Value: !Ref AuroraDBSecret
HotelName:
Description: AWS Paramter Store value containing Hotel's name
Value: !Sub arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${HotelNameParam}
DB のシークレット情報を AWS Secrets Manager に保存します。
Web アプリケーションは、構成パラメーターを AWS SSM Parameter Store に保存します。
Web アプリケーションのデプロイ
ソースおよびデプロイ
「ソース」では、次の通りご自分の GitHub の接続先を指定します。「デプロイ設定」では今回、手動で実施していきます。
構築を設定
ビルドコマンドと起動コマンドを設定などを次のように設定していきます。
サービスを設定
[サービス設定] セクションで環境変数を設定します。
ここが今回の本題です。
Source : Secrets Manager
Environment variable name : MYSQL_SECRET
Environment variable value : CloudFromation で出力された DBSecret の 値
→ 環境変数名は、アプリケーションのソース コードで定義されており、rds.js で取得されます。
Source : Secrets Manager
Environment variable name : HOTEL_NAME
Environment variable value : CloudFromation で出力された HotelName の 値
→ 環境変数名は、アプリケーションのソース コードで定義されており、config.js で取得されます。
[セキュリティ] セクションで、ドロップダウンから AppRunnerHotelAppRole を選択します。
[ネットワーキング] セクションで、Custom VPC を選択し、CloudFormation でデプロイ済の AppRunnerHotelApp-RDS-Connector を選択します。
※カスタムVPCの詳細については、下記が参考になると思います。
[可観測性] セクションでは、AWS X-Ray を有効にしておきます。
動作確認
App Runner > サービス > apprunner-demo から、デフォルトドメインにアクセスし、/params
パスに移動します。
Web アプリケーションが環境変数から読み取った構成パラメーターとシークレット情報が一覧表示されるはず です。
ついでに、パラメータを変更し、動的に追従するか確認してみましょう。
CloudFormation でパラメータを AWS App Runner Hotel2 に変更します。