はじめに
ECS on Fargateの学習の為、サンプルアプリをデプロイしました。今回はタスク定義で設定している環境変数の値をParameter Storeで管理できるように設定していきます。
サンプルアプリの構成
Rails(コンテナ)、Vue(S3)、MySQL(RDS)、Nginx(コンテナ)
CI/CDパイプラインは使用せず、手動で各種設定、デプロイを行います。
やること
- Parameter Storeで環境変数を設定
- 新規のタスクロールを作成(Parameter Storeにアクセスできる)
- タスク定義の更新
- サービスの更新
現在のタスク定義の環境変数
タスク定義ではコンテナの環境変数が定義できます。DBに関する値をキーに直接値で設定しています。あまりセキュアとは言えません。※画像の値はフェイクです。
Parameter Storeで環境変数を設定
今回は機密情報であるDB_USERNAME、DB_HOST、DB_PASSWORDを設定します。
コンソールから「Systems Manager > パラメータストア > パラメータを作成」の順に選択します。
画像では、DB_USERNAMEを設定しています。値には改行やスペースが入らないように気をつけてください。
タスク実行ロールにParameter Storeにアクセスできるポリシーを追加
現時点のタスク実行ロール(ecsTaskExecutionRole)にはParameter Storeにアクセスするポリシーがありません。新しいロールを作成し、ecsTaskExecutionRoleで設定されてるポリシー(AmazonECSTaskExecutionRolePolicy)とParameter Storeにアクセスできるポリシーを追加します。
Parameter Storeにアクセスできるポリシーを作成
「ポリシーを作成」を選択してください。
1.サービスを選択
Systems Managerを検索して選択します。
2.アクション 許可
GetParametersを検索して選択します。 ※GetParameterではありません
3.ARAの追加(青太文字)
使用するアカウントとリージョンを指定したら、ARNを設定します。(Parameter Storeのパラメータ名)
DB_USERNAME、DB_HOST、DB_PASSWORDの3つのARNを追加しました。
4.名前
今回は「ecs-systems-manager-policy」に命名しました。これでポリシーは完成です。
ロールの作成
「ロールを作成」を選択してください
- ユースケース
「他の AWS のサービスのユースケース:」から「Elastic Container Service」検索して「Elastic Container Service Task」を選択します。
2.許可を追加
作成したポリシーとAmazonECSTaskExecutionRolePolicyをポリシーを選択します。
3.名前
今回は「task-execution-role」に命名しました。これでロールは完成です。
タスク定義の更新
1.環境変数の修正
値のタイプを「valuefrom」、値をParameter Storで設定したパラメータに変更します。
2.タスク実行ロールの変更
タスク実行ロールを作成したロールに変更します。これでタスク定義を更新しました。
サービスの更新
新しいリビジョンを選択します。これで作業は終了です。