google-cloud-platform - 从 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。
解决方案
不可以,Cloud Run 默认无法访问 Cloud SQL。您需要遵循两条路径之一。
使用本地 unix 套接字文件连接到 SQL:您需要像您说的那样配置权限,并使用指示连接到数据库的意图的标志进行部署。关注https://cloud.google.com/sql/docs/mysql/connect-run
使用私有 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
推荐阅读
- unit-testing - 如何使用 OpenAPI 查找未通过 null 验证的字段
- c++ - 如何修复 SOIL 未解决的外部错误
- reactjs - Next.js 的 PropTypes:TypeError:prop_types__WEBPACK_IMPORTED_MODULE_0___default(...).shape 不是函数
- typo3-10.x - centos 7 -typo3 版本 10.4.21 - 将 FlexFormService 从 EXT:extbase 移动到 EXT:core
- ruby-on-rails - 有没有办法获取 action_text 为 nill 的所有记录
- r - 无论 x 标签如何,都保持绘图的大小,无论有多少条,都保持条的大小
- python - python - 如何在Python中的pandas数据框中分配节点之间的概率,使得从父节点到子节点的概率不超过100%?
- c++ - Don Box - Essential COM:当删除运算符是成员函数时,为什么要将创建运算符定义为非成员函数?
- windows - 我如何在专注于 Virtual Box 的同时抑制主机系统上的“CTRL ALT DELETE”
- python - pygame俄罗斯方块发烧模式添加计时器