2023年最新版・Spring BootでAWSパラメータストアからDBのパスワードを取得する方法

こんにちは。 エキサイト株式会社の三浦です。

以前以下の記事で、「Spring BootでAWSパラメータストアからDBのパスワードを取得する方法」を紹介しました。

tech.excite.co.jp

ところがつい先日新しいプロジェクトで同じことをしようとした時、設定方法が変わっていることに気づきました。

今回は、2023年最新版の設定方法を紹介します。

以前の取得方法

以前の取得方法は、以下の記事に書いた通り io.awspring.cloud:spring-cloud-starter-aws-parameter-store-config を使用します。

tech.excite.co.jp

ざっくり書くと、以下の通りです。

1. spring-cloud-starter-aws-parameter-store-config を依存に含める

dependencies {
    implementation 'io.awspring.cloud:spring-cloud-starter-aws-parameter-store-config:2.3.2'
}

2. application.yml ファイルに設定を記述

spring:
  application:
    name: sample.application # パラメータストアのキーに使用します
  config:
    import: 'aws-parameterstore:'
  datasource:
    password: xxxx # ここにパスワードが入ります。上書きされるので、何を書いていても大丈夫です。

aws:
  paramstore:
    region: ap-northeast-1 # 使用したいパラメータストアのregionを設定してください
    prefix: /config # パラメータストアのキーのprefixに使用します

3. AWSの認証データを読み込む

  • ローカル環境であれば、環境変数やクレデンシャルファイル等にAWSの認証データを入れる
  • EC2サーバ等であれば、EC2サーバ等に必要なポリシーを追加する

以前は上記の設定によってパラメータストアからDBのパスワードを取得することが出来ていました。

では、新しい取得方法はどうなっているのでしょうか。

新しい取得方法

バージョン3系から新しい取得方法となっているようです。

docs.awspring.io

基本的には最新版を使ったほうがいいので、今後新しく実装するのであればこちらの方法がいいでしょう。

実装方法は以下です。

1. 必要な依存を含める

依存は以前とは違い、以下のものとなっています。

dependencies {
    implementation platform('io.awspring.cloud:spring-cloud-aws-dependencies:3.0.2') // バージョンは適宜変更してください
    implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store'
}

spring-cloud-aws-dependencies で全体のバージョンを決め、その後必要な依存を入れていく、という方法です。

今回はパラメータストアを使いたいため spring-cloud-aws-starter-parameter-store を入れていますが、他のサービスを使いたい場合は他の依存を入れてください

2. application.yml ファイルに設定を記述

application.yml における記述方法も変わっています。

spring:
  cloud:
    aws:
      parameterstore:
        region: ap-northeast-1 # リージョンはここに設定します
  config:
    # ここの aws-parameterstore: 以後にキー名のプレフィックスを設定します
    # 以前はアプリケーション名やプロファイル名が自動的にキー名に入りましたが、最新ではすべて自分で設定する必要があります
    import: 'aws-parameterstore:/spring-boot-config/sample.application_test/'
  datasource:
    password: xxxx # ここにパスワードが入ります。上書きされるので、何を書いていても大丈夫です。

一部設定場所が変わっている他、パラメータストアからデータを取得する際、以前は自動的にアプリケーション名やプロファイル名がキー名として使用されていたのが使用されなくなりました。

他にも色々と設定があるので、必要に応じて追加するといいでしょう。

3. AWSの認証データを読み込む

こちらに関しては大きくは変わっていません。

環境変数やクレデンシャルファイルを使ったり、EC2サーバ等であれば適切なポリシーをつけましょう。

最後に

大まかな、

  1. 依存を追加
  2. application.yml で設定
  3. 認証情報を付与

という流れは代わりませんが、細かい方法が変わっているようです。

今後はこちらがスタンダードになると思いますので、よければ参考にしていただけると幸いです!