如何授权Google App Engine访问Cloud SQL(PostgreSQL)实例?
嗨,我之前也碰到过这个问题!其实GAE连接Cloud SQL根本不需要手动加IP地址——毕竟GAE的出站IP是动态变化的,就算你找到了当前的IP,过段时间也会变,完全不实用。下面给你两种官方推荐的靠谱方法:
方法一:使用Cloud SQL Auth Proxy(灵活易配置)
这是最常用的方式,不需要改动网络配置,靠服务账号认证来建立安全连接:
- 先确认你的项目已经启用了Cloud SQL Admin API(在Google Cloud控制台的API库中搜索启用即可)
- 打开你的GAE项目的
app.yaml配置文件,添加数据库连接信息和Proxy配置:# 数据库环境变量 env_variables: CLOUD_SQL_CONNECTION_NAME: "你的项目ID:实例区域:实例名称" DB_USER: "你的数据库用户名" DB_PASS: "你的数据库密码" DB_NAME: "要连接的数据库名" # 启用Cloud SQL Auth Proxy beta_settings: cloud_sql_instances: "你的项目ID:实例区域:实例名称" - 重新部署你的GAE应用,部署完成后,GAE会自动通过Auth Proxy和Cloud SQL建立安全连接,完全不需要在SQL实例的授权页加任何IP。
方法二:使用VPC网络连接(低延迟更稳定)
如果你的应用对延迟有要求,或者需要和其他VPC内的服务互通,可以用这种方式:
- 第一步创建Serverless VPC Access连接器:在Google Cloud控制台的「VPC网络」菜单里找到「Serverless VPC Access」,创建一个和你的Cloud SQL实例同区域的连接器
- 确保你的Cloud SQL实例使用私有IP(如果之前用的是公网IP,可以在实例设置里切换,切换后会分配VPC内的私有地址)
- 在Cloud SQL的授权页面,添加你VPC网络的CIDR范围(或者直接允许VPC内的访问,只要实例和GAE通过连接器在同一个VPC,就能直接互通)
- 最后在
app.yaml里配置使用VPC连接器:vpc_access_connector: name: "projects/你的项目ID/locations/实例区域/connectors/你的连接器名称" - 重新部署应用后,GAE就能通过VPC内部网络直接访问Cloud SQL,安全性和稳定性都更高。
补充一句:千万不要尝试去收集GAE的出站IP来添加授权——Google不会提供固定的IP列表,而且IP会随时变动,这种方法根本不可靠,上面两种才是官方支持的正确路径。
内容的提问来源于stack exchange,提问作者gcp
相关产品推荐
相关产品推荐

