インフラ

AWS Systems Manager(SSM)のパラメータストアに登録したパラメータをECSの環境変数にセットする!

parameterstore-ecs

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような質問をいただきました。

環境変数に登録されているパスワード系をマスクしたいな…

パスワード系はECSのタスク定義の環境変数にセットしておけばある程度は安全ですが、最近だとSSMのパラメータストアに設定することも多いですよね。

そこで今回はこちらの質問について解説していきます!

SSMのパラメータストアにパラメータを登録する!

まずはAWS Systems Manager(SSM)のパラメータストアにパスワードを登録してみましょう!

SSMのパラメータストアへと進み、「パラメータの作成」をクリック。

パラメータストア

以下のように設定して作成します。

パラメータの詳細
  • 名前:任意(/案件名/環境/項目名 みたいな感じだとわかりやすいと思います。)
  • 利用枠:標準
  • タイプ:安全な文字列
  • KMSキーソース:現在のアカウント
  • 値:格納する値(データベースのパスワード等)

環境変数にパラメータのARNを登録する!

作成したパラメータのARNをECSのタスク定義で環境変数にセットします。

パラメータのARNは以下のようになっています。

arn:aws:ssm:[リージョン]:[アカウントID]:parameter[パラメータ名]

以下の条件で作成した場合は次のようなARNとなります。

  • リージョン:東京(ap-northeast-1)
  • アカウントID:123456789
  • パラメータ名:/sample/stg/database_password

arn:aws:ssm:ap-northeast-1:123456789:parameter/sample/stg/database_password

登録するときの注意点としてはValueFromで登録すること

Valueで登録するとARNがそのままパスワードになっていしまいます(笑)

ECSのタスク実行ロールにSSMへのアクセス権限を追加する!

最後にタスク実行ロールにSSMへのアクセス権限を付与します。

面倒くさければAmazonSSMReadOnlyAccessでも良いと思いますが、必要なパラメータのみアクセスできるようにするのが望ましいですね。

AmazonSSMReadOnlyAccessの追加

動作確認!

あとは普通にタスクを起動するだけで勝手にARNからパラメータへ変換してくれます!

うまく取得できない場合は環境変数をValueFromで登録しているか、SSMへのアクセス権限は正しいかなんかを確認してみてください。

あとがき

アプリケーション側からSSMのパラメータを呼び出すことはやったことがあったのですが、環境変数に直接セットするのは初めてでした。

今回のような場合は変換処理入れなくてもよいのは楽で良いですね。

せっかく簡単に使えるのでパスワードだけでもSSMに登録しておきたいですね!