在Google App Engine with Cloud SQL上航行



我遵循了本指南 https://cloud.google.com/community/tutorials/run-sailsjs-on-google-app-engine 关于如何将 Sails 部署到 Google App Engine。 但是,我的应用程序使用MySQL作为数据库,我在"连接.js"中进行了这样的设置。

mysql: {
adapter: 'sails-mysql',
host: '104.199.196.99', // Internal IP Address of the Cloud SQL Instance
user: 'root', 
password: 'xxxxxx', 
database: 'xxxxxxxx' 
}

尝试连接Cloud SQL时(当我要求登录涉及与数据库的连接时)时,我遇到的错误是:

Sending 500 ("Server Error") response:
Error (E_UNKNOWN) :: Encountered an unexpected error
Could not connect to MySQL:
Error: connect ETIMEDOUT 

我设置正确吗?

对于那些寻求使用Google App Engine with Sails连接到Google Cloud SQL的解决方案.js的人来说,我已经想通了。

使用主机地址连接到 Google Cloud SQL 在这里不起作用,因为防火墙规则和 Cloud SQL 的访问控制将阻止与白名单地址的此类连接。很遗憾,Google App Engine 无法分配静态 IP 地址。因此,App Engine 无法被 Cloud SQL 列入白名单,或者您需要将 0.0.0.0/0 列入白名单,这是所有内容,这并不安全。

解决方案是在连接中使用此配置.js。

googleCloudSQL: {
adapter: 'sails-mysql',
socketPath: '/cloudsql/' + process.env.INSTANCE_CONNECTION_NAME,
user: 'XXXXX',
password: 'XXXXXXX',
database: 'XXXXXXXX'
}

通过使用云 SQL 的实例连接名称通过套接字路径连接到云 SQL,这是执行此操作的本机方法。如果您的 App Engine 已与 Cloud SQL 位于同一项目中,则它已获得连接授权。但是,如果它们位于不同的项目中,则需要设置服务帐户和 IAM。

相关内容

  • 没有找到相关文章

最新更新