原因と対策
「パラメータ名は完全修飾名でなければならない」というエラーメッセージは、AWS Systems Manager パラメータストアがフルパスを要求していることを示しています。
例えば:
- NG: sample-system/hoge/{設定したい値}
- OK: /sample-system/hoge/{設定したい値}
ポイントは、パラメータ名の先頭に /を付けることです。
完全修飾パラメータ名とは?
完全修飾パラメータ名とは、パラメータの階層構造を表す完全なパスのことで、ファイルシステムのパスのようなものです。
例: /app/database/password
appがトップレベルの階層で、その下にdatabase、最下層にpasswordというパラメータ
この方法により、システムはパラメータを論理的に整理し、アクセス制御を容易にすることができます。
注意点
- パラメータ名に使用できる文字は、 a-zA-Z0-9_.-/のみ
ベストプラクティス
一貫性のある命名規則
環境や用途を明確にする命名規則を採用することが望ましいです。
- 推奨される構成
/[環境]/[アプリケーション名]/[コンポーネント]/[パラメータ名]
例:
- 本番環境: /prod/myapp/api/endpoint
- 開発環境: /dev/myapp/api/endpoint
この方法により、本番環境と開発環境の差が一目で分かります。
最後に
パラメーターストア、シークレットストア、環境変数の選択はどれを選べばいいか迷ってしまいますね。
私は、以下の理由からパラメーターストアで統一して運用しています。
1. 環境変数と比べて、一元管理ができる
2. 暗号化された文字列も扱える
3. boto3 からのアクセスが容易
以上、この情報が皆様のお役に立てば幸いです。