2020年10月12日

Spring Bootのアプリケーション起動時に、AWS Systems Manager パラメータストアからパラメータを取得できるみたいなので試してみました。

AWS Systems Manager パラメータストアとは

設定データ管理と機密管理のための安全な階層型ストレージを提供してくれていて、パスワード、データベース文字列、AMI ID、ライセンスコードなどのデータをパラメータ値として保存できます。値はプレーンテキストまたは暗号化されたデータとして保存できます。詳しい説明は、公式ドキュメントを見てください。

サンプル

環境

Spring Boot等のバージョンは次の通りです。

Java 11
Gradle 6.6.1
Spring Boot 2.3.4.RELEASE
Spring Cloud Hoxton.SR8

パラメータの登録

登録するパラメータのkey

デフォルトだと次のような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

Powered by Fruition