access配置文件

jobtbby3  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(426)

我在gcp appengine中部署spring boot应用程序时遇到了很大的麻烦,它使用cloud postgres作为数据库。早些时候,我使用带有ip白名单的tcp连接jdbc来访问数据库,在测试期间工作正常,但是在部署到appengine之后,由于 sslsocket timed out . 所以经过一番挖掘,我发现对于标准appengine运行时连接云postgres,我必须使用postgressocketfactory

<dependency>
            <groupId>com.google.cloud.sql</groupId>
            <artifactId>postgres-socket-factory</artifactId>
            <version>1.2.2</version>
        </dependency>

spring.datasource.url=jdbc:postgresql:///{REDACT}?cloudSqlInstance={REDACT}&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user={REDACT}&password={REDACT} 在application.properties中。
但是gcp需要验证从具有特定特权的服务帐户生成的密钥的连接,该特权已添加到application.properties。 spring.cloud.gcp.credentials.location=classpath:gcloud.json 但是在java中,构建的jar文件不能访问json,也不能访问部署的appengine示例。这是错误
[应用程序引擎中的屏幕截图错误][1]
附录yaml

runtime: java11

pom.xml文件

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
            <version>1.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.19</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.google.cloud.sql</groupId>
            <artifactId>postgres-socket-factory</artifactId>
            <version>1.2.2</version>
        </dependency>

任何答复都会大有帮助。谢谢[1]:https://i.stack.imgur.com/gev2r.png

ivqmmu1c

ivqmmu1c1#

使用appengine,您不需要使用服务帐户密钥文件。您可以依赖自动提供应用程序引擎服务帐户凭据的元数据服务器。服务帐户暂时不可自定义,但应在2021年更改!其名称如下: <projectID>@appspot.gserviceaccount.com 确保此服务帐户有足够的cloud sql权限(默认情况下,它在项目上有编辑器角色,并且有足够的权限(甚至太多!!)权限)
因此,请使用 app.yaml 文件来设置与cloudsql的连接,并在代码中打开一个socket(与socketfactory连接)

相关问题