2020年10月12日
Spring Bootのアプリケーション起動時に、AWS Systems Manager パラメータストアからパラメータを取得できるみたいなので試してみました。
設定データ管理と機密管理のための安全な階層型ストレージを提供してくれていて、パスワード、データベース文字列、AMI ID、ライセンスコードなどのデータをパラメータ値として保存できます。値はプレーンテキストまたは暗号化されたデータとして保存できます。詳しい説明は、公式ドキュメントを見てください。
Spring Boot等のバージョンは次の通りです。
Java 11
Gradle 6.6.1
Spring Boot 2.3.4.RELEASE
Spring Cloud Hoxton.SR8
デフォルトだと次のような3階層で設定するようになっています。[prefix]/[name]_[アプリケーションのprofile(defaultの場合は省略可)]/[key]
設定値の抜粋です。(値はデフォルト値)
- パラメータストアから取得される全プロパティで共有されるプレフィクス。第1階層の値。
- aws.paramstore.prefix=/config
- 全サービスで共有されるコンテキスト名。第2階層の値。
- aws.paramstore.default-context=application
- コンテキスト名とプロファイルの区切り文字.
- aws.paramstore.profile-separator=_
- パラメータストアを利用するかどうか
- aws.paramstore.enabled=true
取得するパラメータを組み立てているロジックは AwsParamStorePropertySourceLocator#PropertySource<?> locate(Environment) にあります。
パラメータストアにパラメータを登録します。今回は、DBへのアクセス情報を登録します。
/config/sample/spring.datasource.url=jdbc:mysql://localhost:33306/sample
/config/sample/spring.datasource.username=docker
/config/sample/spring.datasource.password=docker
パラメータストアを利用するために追加する依存関係はこれだけです。
build.gradle