我创建了一个连接到Google Cloud SQL的小型NodeJS REST API。使用Google AppEngine Flexible环境可以使用,但是当我尝试使用标准环境时,Google Cloud SQL连接被拒绝。
我试图使用内部IP以及socketPath进行连接。
我已经创建了一个存储库来展示错误:https://github.com/cbullokles/appengine-error
根据文档,我希望在两种情况下连接到MySQL,但它没有按预期工作。这是一个没有记录的限制吗?或许我没有正确阅读AppEngine文档。
通往connect to Cloud SQL instances from App Engine Standard的方法是使用Unix域套接字连接到提供App Engine标准环境的Cloud SQL实例。
如果您使用Node.js mysql
包,请按照这种方式在App Engine中运行:
const db = mysql.createConnection ({
socketPath: '/cloudsql/<PROJECT_NAME>:<REGION_NAME>:<INSTANCE_NAME>',
user: 'user',
password: '1234',
database: 'yourDatabase'
});
<PROJECT_ID>:<REGION>:<INSTANCE_ID>
是每个Cloud SQL实例的唯一字符串。它在实例的“实例详细信息”页面上的“实例连接名称”下列出,或在使用connectionName
命令时在gcloud sql instances describe <INSTANCE_ID>
下列出。
此外,Node.js的App Engine Standard官方文档还有一些用于使用code samples库进行连接的knex
。