下列的本指南 and 这段代码示例,我的里面有这个application-deploy.yaml
:
spring:following
cloud:
gcp:
project-id: ${PROJECT_ID} # Set during build-process (Docker)
sql:
enabled: true
database-name: xxxxxxxxxx
instance-connection-name: ${sm://CLOUD_SQL_INSTANCE_CONNECTION_NAME}
datasource:
driver-class-name: org.postgresql.Driver
username: ${sm://JDBC_DATABASE_USERNAME}
password: ${sm://JDBC_DATABASE_PASSWORD}
name: postgres
以及我的以下依赖项pom.xml
:
<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>
然而,运行后gcloud run deploy
对于服务来说,由于环境变量没有正确解析,它立即崩溃:
Caused by: java.lang.IllegalArgumentException: [//CLOUD_SQL_INSTANCE_CONNECTION_NAME] Cloud SQL connection name is invalid, expected string in the form of "<PROJECT_ID>:<REGION_ID>:<INSTANCE_ID>".
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-31.1-jre.jar!/:na]
at com.google.cloud.sql.core.CloudSqlInstance.<init>(CloudSqlInstance.java:135) ~[jdbc-socket-factory-core-1.11.0.jar!/:na]
at com.google.cloud.sql.core.CoreSocketFactory.lambda$getCloudSqlInstance$0(CoreSocketFactory.java:165) ~[jdbc-socket-factory-core-1.11.0.jar!/:na]
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na]
...
以下是我的bootstrap.yaml
spring:
cloud:
gcp:
project-id: ${PROJECT_ID}
secretmanager:
project-id: ${PROJECT_ID}
为了更好地衡量,并根据另一个来源,我加入了一些额外的依赖管理,以确保 `` 可用:
<!-- ... -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- ... -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
我已经添加了Secret Manager Admin
SA 负责人的角色:
我在这里缺少什么?