0

TL;DR:GCP 机密未在引导文件中解析,但 sql 启动器在引导时需要实例连接名称和数据库名称

我正在尝试将 GCP Secretmanager 合并到在 Google App Engine 上运行并使用 GCP SQL 的 Spring Boot 应用程序中。

但是,${sm://前缀似乎在引导时没有得到解决。

作为参考,这是我的 pom 的一部分。(我正在使用 com.google.cloud 依赖项)并且我启用了 spring 配置文件“gcp”

  <parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <relativePath/>
    <version>2.4.2</version> <!-- lookup parent from repository -->
  </parent>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>spring-cloud-gcp-dependencies</artifactId>
        <version>2.0.1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

<!-- ... -->
    <!-- cloud -->
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter-secretmanager</artifactId>
    </dependency>

在我的引导程序中(例如)

spring:
  cloud:
    gcp:
      sql:
        database-name: ${sm://some-fancy-db-secret}
        instance-connection-name: ${sm://some-cool-connection-name}

部署时出现异常,指出需要定义数据库名称。

如果我填写普通属性,它就可以正常工作。甚至我文件中的${sm://db-username} 作品。application-gcp.yml

当我从引导文件中移动属性时,它也会失败。引导时似乎需要连接。(我对此有点不知所措)

没有花哨的多项目正在进行,是的,秘密是存在的。

我有一种感觉,我在这里遗漏了一些愚蠢的东西,或者某处存在版本不匹配。(Codelab似乎根本没有提到任何特别之处。)

我也检查了这个问题。然而,提议的答案似乎不再有效。com.google.cloud.spring.autoconfigure.secretmanager.GcpSecretManagerProperties甚至不包含前缀属性,除了它在我的普通属性文件中工作得很好。

4

1 回答 1

0

已在最新版本中修复。

于 2021-04-06T09:06:07.893 回答