Google Cloud SQL 连接¶
gcpcloudsql://
连接由 airflow.providers.google.cloud.operators.cloud_sql.CloudSQLExecuteQueryOperator
用于在 Google Cloud SQL 数据库上执行查询。Google Cloud SQL 数据库可以是 Postgres 或 MySQL,因此这是一种“元”连接类型。它为 MySQL 和 Postgres 引入了通用模式,包括应使用哪种类型的连接。Google Cloud SQL 支持通过公共 IP 或 Cloud SQL 代理进行连接。在后一种情况下,CloudSQLHook
使用 CloudSqlProxyRunner
自动准备和使用临时 Postgres 或 MySQL 连接,该连接将使用代理进行连接(通过 TCP 或 UNIX 套接字)。
配置连接¶
- 主机 (必填)
要连接的主机。
- 模式 (可选)
指定要在数据库中使用的模式名称。
- 登录名 (必填)
指定要连接的用户名。
- 密码 (必填)
指定要连接的密码。
- 额外 (可选)
指定可以在 Google Cloud SQL 连接中使用的额外参数(作为 JSON 字典)。
有关 extra 字段中支持的所有参数的详细信息,请参阅
CloudSQLHook
。“extras” 字段示例
{ "database_type": "mysql", "project_id": "example-project", "location": "europe-west1", "instance": "testinstance", "use_proxy": true, "sql_proxy_use_tcp": false }
当将连接指定为 URI 时(在
AIRFLOW_CONN_{CONN_ID}
变量中),您应该按照数据库连接的标准语法指定它,其中 extras 作为 URI 的参数传递。请注意,URI 的所有组件都应进行 URL 编码。例如
export AIRFLOW_CONN_GOOGLE_CLOUD_SQL_DEFAULT='gcpcloudsql://user:[email protected]:3306/mydb?database_type=mysql&project_id=example-project&location=europe-west1&instance=testinstance&use_proxy=True&sql_proxy_use_tcp=False'
配置和使用 IAM 身份验证¶
警告
此功能需要 gcloud
命令 (Google Cloud SDK) 必须安装在 Airflow 工作程序上 安装。
警告
IAM 身份验证仅适用于 Google 服务帐户。
在 Google Cloud IAM 端配置服务帐户¶
要通过 IAM 连接,您需要使用服务帐户。它可以是您用于 gcloud
身份验证的同一服务帐户,也可以是另一个帐户。如果您决定使用不同的帐户,则应从用于 gcloud
身份验证的帐户模拟此帐户,并授予 Service Account Token Creator
角色。有关如何授予角色的更多信息,请参阅此处。
此外,应将服务帐户配置为与 IAM 一起使用。以下是描述启动前应完成的操作的链接:PostgreSQL 和 MySQL。
配置启用了 IAM 的 gcpcloudsql
连接¶
要使用 IAM,您需要在 extra
字段中启用 "use_iam": "True"
。并在 login
字段中指定 IAM 帐户,格式为 USERNAME@PROJECT_ID.iam.gserviceaccount.com
,并在 password
字段中指定空字符串。
例如
CONNECTION_WITH_IAM_KWARGS = {
"conn_type": "gcpcloudsql",
"login": CLOUD_IAM_SA,
"password": "",
"host": CLOUD_SQL_IP_ADDRESS,
"port": CLOUD_SQL_PUBLIC_PORT,
"schema": CLOUD_SQL_DATABASE_NAME,
"extra": {
"database_type": DATABASE_TYPE,
"project_id": PROJECT_ID,
"location": REGION,
"instance": CLOUD_SQL_INSTANCE_NAME,
"use_proxy": "False",
"use_ssl": "True",
"use_iam": "True",
},
}