この記事について
本記事は、2022年1月時点の社内向け資料をもとに再編集したものです。
記載されている技術情報・仕様・価格等は執筆当時の内容に基づいており、最新の内容とは異なる可能性があります。
ご利用の際は、AWS公式ドキュメント等で最新情報をご確認ください。
概要
アプリケーションで使用する定数や機密情報を、AWS Systems Managerの「パラメータストア」で管理する仕組みを導入しました。
本記事では、その導入背景と運用上のメリット・デメリットについてまとめます。
Systems Manager パラメータストアとは。
パラメータストアは、従来 .env
ファイルで管理していたような設定値や機密情報を、AWS上で一元管理・取得できるサービスです。
サーバーやコンテナからこの情報を動的に参照することで、安全かつ柔軟な運用が可能になります。



メリット
- 設定値をコードから分離して管理できる
- 運用・開発の負荷軽減につながる
- 機密情報を安全に保管・管理できる
1. 設定値をコードから分離して管理できる
- パラメータが視覚的に一覧できるため、見やすい
- AWSのコンソール画面を使って誰でも管理できる(非エンジニアでも操作可能)
- パラメータ値の変更がすべてAWS上で完結するため、コードの修正は不要
- 変更履歴をAWS上で確認でき、コードリポジトリを追う必要がない

2. 運用・開発の負荷軽減につながる
閾値などの設定値をパラメータストアで管理しておくことで、運用上の柔軟性が向上します。
例えば、閾値がコード内にハードコーディングされている場合は、
「コード修正 → PR作成 → レビュー → マージ → デプロイ」といった一連の開発フローが毎回必要になります。
一方、パラメータストアに閾値を設定していれば、
「パラメータの値を修正 → アプリケーションの再起動(例:Ruby on Railsの場合rails restart
)」のみで対応が完了します。
そのため、わざわざ開発者に修正を依頼しなくても済み、運用担当者自身で設定変更ができるようになり、対応や確認作業にスピード感を持たせることが可能です。
3. アクセスキーなどの機密情報を安全に管理できる
パラメータストアは、データベースの接続情報やAPIキーなどの秘匿情報を安全に管理するのに適しています。
秘匿情報をソースコード内に記述しGitで管理してしまうと、万が一コードが外部に流出した際に、機密情報まで漏洩してしまうリスクがあります。
実際に、ソースコードがGitHub上で誤って公開され、情報流出につながった事例も報告されています(例:NEC、三井住友銀行、NTTデータなど)。
出典:ITmedia NEWS – NECもソースコード流出を確認、GitHubで
https://www.itmedia.co.jp/news/articles/2102/01/news118.html
パラメータストアでは「セキュア文字列(SecureString)」というタイプを選択することで、パラメータを暗号化して保存することが可能です。
これにより、機密情報の取り扱いをより安全に行うことができます。

デメリット
- 初期設定や管理に手間がかかる場面がある
- コンテナ利用時は変更を反映させるための再起動が必要
- ローカル開発環境には.envの併用が必要になる
1. 初期設定や管理に手間がかかる場面がある
パラメータをAWS上で設定し、それをコード側で読み込む必要があるため、運用上はひと手間増えることになります。
その分、安全性は高まりますが、手間とのバランスをどう取るかが課題になる場面もあります。
2. コンテナ利用時は変更を反映させるための再起動が必要
コンテナ環境では、パラメータストアの値を変更した後にコンテナを再起動しないと、変更内容が反映されません。
(Ruby on Railsの場合、rails restart
などでも対応可能です)。
3. ローカル開発環境には.envの併用が必要になる
ローカルPCで開発を行う場合は、別途 .env
ファイルを用意して設定する必要があります。
ただし、ローカル環境でもコンテナを利用して開発している場合は、パラメータストアの値を直接参照できるため、この対応が不要になる可能性もあります(※詳細は未検証)。
料金
パラメータストアには「スタンダード」と「アドバンスト」の2つのオプションがあります。
- スタンダード(Standard):無料で利用可能です。
- アドバンスト(Advanced):1パラメータあたり月額0.05 USDで、最大8KBまでのデータを設定できます。
詳細な料金については、以下の公式情報をご参照ください。
出典:Amazon Web Services Japan – AWS Systems Manager の料金
https://aws.amazon.com/jp/systems-manager/pricing/
設定方法(ECS)
task-definition.json
"containerDefinitions": [ { "secrets": [ { "name": "DATABASE_PASSWORD", "valueFrom": "arn:aws:ssm:{AWS Region}:{AWS Account ID}:parameter/DATABASE_PASSWORD" }, { "name": "DATABASE_USER", "valueFrom": "arn:aws:ssm:{AWS Region}:{AWS Account ID}:parameter/DATABASE_USER" }, ︙ ︙
deploy.yml
- name: Render Amazon ECS task definition with: task-definition: ecs/task-definition.json
参考URL
出典:資格マフィア – 【AWS】パラメータストアを使うメリット
https://shikaku-mafia.com/parameter-store-merit/
出典:DevelopersIO(クラスメソッド) – ECS Task DefinitionをActionsで自動更新する
https://dev.classmethod.jp/articles/gh-actions-automation-task-definition/
出典:DevelopersIO(クラスメソッド) – AWS CLIですべてのSSM Parameterを一括取得する
https://dev.classmethod.jp/articles/aws-cli-all-ssm-parameter-get/
出典:Qiita – パラメータストアからEC2に環境変数を設定する
https://qiita.com/th_/items/8ffb28dd6d27779a6c9d
出典:Qiita – AWSのParameter StoreとSecrets Manager、結局どちらを使えばいいのか?比較
https://qiita.com/tomoya_oka/items/a3dd44879eea0d1e3ef5
出典:Stack Overflow 日本語サイト – AWS の Parameter Store と Secrets Manager はどのように使い分けますか?
https://ja.stackoverflow.com/questions/68897/
技術情報の補足
本記事でご紹介している手法や事例は、筆者が関わった2022年当時の開発案件におけるナレッジをまとめたものです。
現在の技術スタックやフレームワークのバージョンにおいては、より適切な手法がある場合がありますので、あくまで参考情報としてご覧いただき、必要に応じて最新の公式情報をご確認ください。