首页 > 解决方案 > 从 Cloud Run on Google Cloud 访问 Cloud SQL

问题描述

我有一个 Cloud Run 服务,它通过SQLAlchemy. 但是,在 Cloud Run 的日志中,我看到CloudSQL connection failed. Please see https://cloud.google.com/sql/docs/mysql/connect-run for additional details: ensure that the account has access to "<connection_string>". 转到那个链接,它说:

“默认情况下,您的应用将使用 Cloud Run(完全托管)服务帐户授权您的连接。服务帐户的格式为 PROJECT_NUMBER-compute@developer.gserviceaccount.com。”

但是,以下(https://cloud.google.com/run/docs/securing/service-identity)说:

“默认情况下,Cloud Run 修订版使用 Compute Engine 默认服务帐号 (PROJECT_NUMBER-compute@developer.gserviceaccount.com),该帐号具有 Project > Editor IAM 角色。这意味着默认情况下,您的 Cloud Run 修订版具有读写权限访问您的 Google Cloud 项目中的所有资源。”

那么这不应该意味着 Cloud Run 已经可以访问 SQL 了吗?我已经在 Cloud Run 部署页面中设置了 Cloud SQL 连接。您建议我怎么做才能允许从 Cloud Run 访问 Cloud SQL?

编辑:我必须启用 Cloud SQL API。

标签: google-cloud-platformgoogle-cloud-sqlgoogle-cloud-run

解决方案


不可以,Cloud Run 默认无法访问 Cloud SQL。您需要遵循两条路径之一。

  1. 使用本地 unix 套接字文件连接到 SQL:您需要像您说的那样配置权限,并使用指示连接到数据库的意图的标志进行部署。关注https://cloud.google.com/sql/docs/mysql/connect-run

  2. 使用私有 IP 连接到 SQL:这涉及将 Cloud SQL 实例部署到 VPC 网络并因此获得私有 IP 地址。然后,您使用 Cloud Run VPC 访问连接器(当前为测试版)允许 Cloud Run 容器能够连接到该 VPC 网络,该网络直接包括 SQL 数据库的 IP 地址(无需 IAM 权限)。关注https://cloud.google.com/vpc/docs/configure-serverless-vpc-access


推荐阅读