GCloud 机密未在 spring 属性中解析
GCloud secrets not resolving in spring properties
TL;DR:GCP 机密未在 bootstrap 文件中解析,但 sql 启动器需要 bootstrap
上的实例连接名称和数据库名称
我正在尝试将 GCP Secretmanager 合并到 Spring 启动应用程序中,该应用程序在 Google App Engine 上 运行 并使用 GCP SQL.
但是 ${sm://
前缀似乎在 bootstrap 时没有被解析。
作为参考,这是我 pom.xml 的一部分。 (我正在使用 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>
而在我的 bootstrap(例如)
spring:
cloud:
gcp:
sql:
database-name: ${sm://some-fancy-db-secret}
instance-connection-name: ${sm://some-cool-connection-name}
部署时出现异常,指出需要定义数据库名称。
如果我填写普通属性,它就可以正常工作。
甚至我的 application-gcp.yml
文件中的 ${sm://db-username}
工作 。
当我从 bootstrap 文件中移动 属性 时,它也失败了。
bootstrapping 时似乎需要连接。 (我对此一无所知)
没有花哨的多项目进行,是的,秘密存在。
我觉得我在这里遗漏了一些愚蠢的东西或者某处版本不匹配。
(The Codelab 似乎根本没有提到任何特别的东西。)
我也检查了。但是,建议的答案似乎不再有效。 com.google.cloud.spring.autoconfigure.secretmanager.GcpSecretManagerProperties
甚至不包含前缀 属性,此外它在我的普通属性文件中工作得很好。
已在最新版本中修复。
TL;DR:GCP 机密未在 bootstrap 文件中解析,但 sql 启动器需要 bootstrap
上的实例连接名称和数据库名称我正在尝试将 GCP Secretmanager 合并到 Spring 启动应用程序中,该应用程序在 Google App Engine 上 运行 并使用 GCP SQL.
但是 ${sm://
前缀似乎在 bootstrap 时没有被解析。
作为参考,这是我 pom.xml 的一部分。 (我正在使用 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>
而在我的 bootstrap(例如)
spring:
cloud:
gcp:
sql:
database-name: ${sm://some-fancy-db-secret}
instance-connection-name: ${sm://some-cool-connection-name}
部署时出现异常,指出需要定义数据库名称。
如果我填写普通属性,它就可以正常工作。
甚至我的 application-gcp.yml
文件中的 ${sm://db-username}
工作 。
当我从 bootstrap 文件中移动 属性 时,它也失败了。 bootstrapping 时似乎需要连接。 (我对此一无所知)
没有花哨的多项目进行,是的,秘密存在。
我觉得我在这里遗漏了一些愚蠢的东西或者某处版本不匹配。 (The Codelab 似乎根本没有提到任何特别的东西。)
我也检查了com.google.cloud.spring.autoconfigure.secretmanager.GcpSecretManagerProperties
甚至不包含前缀 属性,此外它在我的普通属性文件中工作得很好。
已在最新版本中修复。