1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SpringBootのapplication設定をAWSパラメータストアで行う

Posted at

はじめに

  • DBアクセス用パスワード等の秘匿情報を設定ファイルに記載しておくのは管理上好ましくないので、AWSパラメータストアで管理するにあたり、Spring Bootアプリケーション設定値(application.yml/application.properties)にパラメータストアの設定値を統合(パラメータストアの値をアプリケーション設定値に反映)する作業を行いました。

  • 本番と開発の設定を分離している点と合わせて手順等を備忘録としてまとめたものです。(乱筆な点、ご容赦ください)

注意点

  • 実際の設定ファイルの値とは変えている個所がありますので、この値そのもので動作検証して保証したものではありません。

環境

  • Spring Boot 3.1.0
  • Java 17
  • gradle 8.8

依存関係の追加

まず、Spring BootプロジェクトにAWSパラメータストアを使用するための依存関係を追加します。build.gradleファイルに以下のエントリを追加します。

dependencies {
    implementation platform("io.awspring.cloud:spring-cloud-aws-dependencies:3.1.1")
    implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store'
}

👉公式サイト

パラメータストアの設定値(例)

パス
/hogehogeapp/mysqlusername appuser
/hogehogeapp/development/mysqlpassword dev_pass123
/hogehogeapp/production/mysqlpassword prd_pass123

SpringBootのアプリケーション設定値(抜粋)

application.yml
spring:
  application:
    name: hogehogeapp
  profiles:
    active: ${APPENV} # APPENVには環境変数として production or development のいずれかが定義されている  
  cloud:    
    aws:
      parameterstore:
        region: ap-northeast-1
application-production.yml
spring:
  config:
    import: 'aws-parameterstore:/hogehogeapp/'
  datasource:
    url: jdbc:mysql://db:3306/hogehogeapp
    username: ${mysqlusername}
    password: ${production.mysqlpassword}
    driver-class-name: com.mysql.cj.jdbc.Driver
application-development.yml
spring:
  config:
    import: 'aws-parameterstore:/hogehogeapp/'
  datasource:
    url: jdbc:mysql://db:3306/hogehogeapp
    username: ${mysqlusername}
    password: ${development.mysqlpassword}
    driver-class-name: com.mysql.cj.jdbc.Driver

少し詰まったところ

  • import: 'aws-parameterstore:/hogehogeapp/'について
    • import: 'aws-parameterstore:/'だとパラメータストア全体の値が取れることを期待したが、うまく取れないような動きになった。(当初${hogehogeapp.mysqlusername}という紐づけで試行)
    • 同じくimport: 'aws-parameterstore:/hogehogeapp/'についてアポストロフィで囲んでいる点やimport: 'aws-parameterstore:/hogehogeapp'とパスの最後にスラッシュがないケースなどでもうまく取得出来ないケースあり試行錯誤して最終的には上記のような構成に。

参考にさせていただいたサイトなど(ありがとうございました)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?