UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Spring Cloud GCP】Secret Manager に登録した秘密情報をアプリケーションの設定値として設定する - Spring Cloud 1.2.2.RELEASEの場合

GCP のSecret Manager に秘密情報を登録した uga-box.hatenablog.com

これをSpring Bootアプリケーションから利用したい

ドキュメントは下だと思っていたが、バージョンが1.2.2.RELEASEで、使っているバージョン1.2.3.RELEASEと異なっていた
https://cloud.spring.io/spring-cloud-static/spring-cloud-gcp/1.2.2.RELEASE/reference/html/#secret-manager

パッチバージョンの違いなので問題ないと思っていたが、かなり大きな変更があって実装も変更する必要があった

もったいないので両方備忘録として記載する

1.2.2.RELEASEの場合

Dependencyの設定

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-gcp-starter-secretmanager</artifactId>
</dependency>

bootstrap.ymlの用意

spring:
  cloud:
    gcp:
      secretmanager:
        bootstrap:
          enabled: true
        secret-name-prefix: secrets.

spring.cloud.gcp.secretmanager.bootstrap.enabled: Secret ManagerからシークレットをロードしてConfigurationPropertiesにバインドできるようにする
spring.cloud.gcp.secretmanager.secret-name-prefix: アプリケーションから secret.<secret-id> というキーで秘密情報を参照できるようにする

あとは、Spring Bootの話なのだが以下のように実装してみた

ConfigurationPropertiesクラスの用意

secret-idをsecret_valueで登録した場合、secretValueというプロパティ名にする

@ConfigurationProperties("secrets")
class SecretBindingConfigurationProperties {
  String secretValue;

 @ConstructorBinding
  SecretBindingConfigurationProperties(String secretValue) {
    this.secretValue = secretValue;
  }

利用する

利用する時は@EnableConfigurationProperties(SecretBindingConfigurationProperties.class)をつける

1.2.3.RELEASEの場合

1.2.3.RELEASEの場合は次のブログに記載する