繁体   English   中英

NodeJ:无法从Google App Engine连接Google Cloud SQL

[英]NodeJs:Unable to connect Google Cloud SQL from Google App Engine

我已经从事App Engine和Cloud SQL已有一段时间了。

最近,我在数据库上禁用了公共访问权限 从那时起,我无法使用我的App Engine连接到CloudSQL(App Engine和Cloud SQL都在同一个Google Cloud Project中)。

我能够连接的唯一方法是将CloudSQL上的App Engine IP列入白名单。 但是在新的部署中,IP发生了变化,因此添加静态IP并不是解决此问题的理想方法。

在“ Cloud SQL连接”选项卡中,它显示以下内容:

App Engine授权

默认情况下,该项目中的所有应用程序都经过授权。 要授权其他项目中的应用,请按照以下步骤操作。

此项目中的应用:所有已授权。 在这种情况下不正确。

启用了Cloud SQL API和Cloud SQL Admin API。

搜索了这些问题,并按照文档和其他stackoverflow问题中的步骤进行操作:

1) 无法从我的App Engine访问Google Cloud SQL数据库
2) 致命错误后节点JS Mysql协议队列
3) Node-MySqL中的“ PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR”
4) 错误:在mysql节点中出现致命错误后无法排队查询
5) 无法从Google App Engine连接Google Cloud SQL

所有这些都没有太大帮助。

connection = mysql.createConnection({
  host     : 'INSTANCE_CONNECTION_NAME',
  user     : 'db_user',
  password : 'db_password',
  database : 'db_name'
});

预期: Get a Connection.
实际: getaddrinfo ENOTFOUND INSTANCE_CONNECTION_NAME INSTANCE_CONNECTION_NAME:3306

不确定为什么要两次使用INSTANCE_CONNECTION_NAME

让我说一下,如果我了解您的问题。

您拥有公共IP,但仅使项目中的应用程序可以访问它。 如果是这种情况,并且考虑到您使用的是灵活环境,我发现以下方法会有所帮助

1)建立连接时,将Host称为172.17.0.6

2)并在app.yaml中,指定“实例概述”页面中提到的INSTANCE_CONNECTION_NAME

3)部署并运行。

这将与使用Docker构建的Flexible NodeJs环境一起使用。 所使用的默认数据库容器为172.17.0.6 ,可在此处访问实例连接名称,并在App EngineCloudSQL DB之间建立连接。

我尝试复制您的用例场景,以下步骤对我有用。 您有没有公共IP的Cloud SQL实例,然后为了从App Engine连接到它,您将需要为两个服务使用相同的VPN网络。 因此,您将必须编辑Cloud SQL实例以指示要使用的网络并编辑app.yaml配置文件。 同样重要的是,两个服务都必须在同一区域中运行。

app.yaml配置文件中,您必须添加以下标签:

network:
    name: [YOUR_NETWORK_NAME]
    subnetwork_name: [YOUR_SUBNETWORK_NAME]

并使用数据库环境变量:

env_variables:
  SQL_USER: [YOUR_USER]
  SQL_PASSWORD: [YOUR_PASSWORD]
  SQL_DATABASE: [YOUR_DATABASE-NAME]
  # e.g. my-awesome-project:us-central1:my-cloud-sql-instance
  INSTANCE_CONNECTION_NAME:<INSTANCE_CONNECTION_NAME>
# [END gae_flex_mysql_env]

最后是以下几行:

beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>

请记住,您必须用所需的数据替换“ <>”或“ []”中的内容。

有关更多信息,您可以查看此文档从App Engine连接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM