GCP 云运行云 - 无法访问云 SQL 实例"${process.env.INSTANCE_CONNECTION_NAME}"



当试图连接到另一个项目中的云sql实例时,我得到了上述错误。这会在日志中抛出以下错误:

ENOENT /cloudsql/${process.env.INSTANCE_CONNECTION_NAME}/.s.PGSQL.5432

Cloud Run中的连接已经建立并指向另一个项目中的实例:

云运行连接

此外,用于此部署的服务帐户在其自己的项目和SQL实例所在的项目中都具有Cloud SQL Client权限。

最后,环境变量也在云运行中设置,并具有正确的实例连接名称。

我最初试图让这个工作在一个现有的部署没有运气,然后也部署它从头开始,但同样的错误不断发生。

应用程序是基于node.js的,序列化为ORM。

任何帮助都将非常感激。

我已经设法解决了这个问题,问题是在config.js与连接字符串。

最初的连接字符串是:

username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: '/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}',
dialect: 'postgres',
dialectOptions: {
socketPath: '/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}'
}

Cloud Run似乎无法读取INSTANCE_CONNECTION_NAME。我把它改成:

username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: process.env.INSTANCE_CONNECTION_NAME,
dialect: 'postgres',
dialectOptions: {
socketPath: process.env.INSTANCE_CONNECTION_NAME
}

并设置INSTANCE_CONNECTION_NAME以包含/cloudsql/部分,瞧,它工作了。

最新更新