airflow.providers.google.cloud.hooks.cloud_sql¶
此模块包含一个 Google Cloud SQL Hook。
属性¶
类¶
操作状态的辅助类。 |
|
Google Cloud SQL API 的 Hook。 |
|
获取 Google Cloud SQL 异步 Hook 的类。 |
|
下载 cloud-sql-proxy 并将其作为 Python 进程的子进程运行。 |
|
为 Google Cloud SQL 提供数据库连接配置(gcpcloudsqldb:// 类型的连接)。 |
模块内容¶
- class airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLHook(api_version, gcp_conn_id=default_conn_name, impersonation_chain=None, **kwargs)[源码]¶
继承自:
airflow.providers.google.common.hooks.base_google.GoogleBaseHook
Google Cloud SQL API 的 Hook。
Hook 中所有使用 project_id 的方法必须使用关键字参数而非位置参数调用。
- 参数:
api_version (str) – API 版本。
gcp_conn_id (str) – 用于 GCP 凭据的 Airflow 连接。
impersonation_chain (str | collections.abc.Sequence[str] | None) – 这是用于模拟的可选服务账号,使用短期凭据。
- get_conn()[源码]¶
获取 Cloud SQL 的连接。
- 返回:
Google Cloud SQL 服务对象。
- 返回类型:
googleapiclient.discovery.Resource
- create_instance(body, project_id)[源码]¶
创建新的 Cloud SQL 实例。
- 参数:
body (dict) – Cloud SQL insert API 所需的请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/insert#request-body 中所述。
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- patch_instance(body, instance, project_id)[源码]¶
更新 Cloud SQL 实例的设置。
注意:这不是部分更新,因此必须包含所有要保留的设置的值。
- 参数:
body (dict) – Cloud SQL patch API 所需的请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/patch#request-body 中所述。
instance (str) – Cloud SQL 实例 ID。不包含项目 ID。
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- get_database(instance, database, project_id)[源码]¶
从 Cloud SQL 实例获取数据库资源。
- 参数:
- 返回:
一个 Cloud SQL 数据库资源,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases#resource 中所述。
- 返回类型:
- create_database(instance, body, project_id)[源码]¶
在 Cloud SQL 实例内创建新的数据库。
- 参数:
instance (str) – 数据库实例 ID。不包含项目 ID。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body 中所述。
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- patch_database(instance, database, body, project_id)[源码]¶
更新 Cloud SQL 实例内的数据库资源。
此方法支持 patch 语义。请参阅 https://cloud.google.com/sql/docs/mysql/admin-api/how-tos/performance#patch。
- 参数:
instance (str) – 数据库实例 ID。不包含项目 ID。
database (str) – 要在该实例中更新的数据库名称。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases/insert#request-body 中所述。
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- export_instance(instance, body, project_id)[源码]¶
将数据从 Cloud SQL 实例导出到 Cloud Storage 存储桶,格式为 SQL dump 或 CSV 文件。
- 参数:
instance (str) – Cloud SQL 实例的数据库实例 ID。不包含项目 ID。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/export#request-body 中所述
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- import_instance(instance, body, project_id)[源码]¶
从 Cloud Storage 中的 SQL dump 或 CSV 文件将数据导入到 Cloud SQL 实例。
- 参数:
instance (str) – 数据库实例 ID。不包含项目 ID。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/import#request-body 中所述
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- clone_instance(instance, body, project_id)[源码]¶
将一个实例克隆到目标实例。
- 参数:
instance (str) – 要克隆的数据库实例 ID。不包含项目 ID。
instance – 用于克隆的数据库实例 ID。不包含项目 ID。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1beta4/instances/clone 中所述
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
None
- 返回类型:
None
- create_ssl_certificate(instance, body, project_id)[源码]¶
为 Cloud SQL 实例创建 SSL 证书。
- 参数:
instance (str) – Cloud SQL 实例 ID。不包含项目 ID。
body (dict) – 请求体,如 https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/sslCerts/insert#SslCertsInsertRequest 中所述
project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。
- 返回:
SslCert 插入响应。更多详情请参阅: https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/sslCerts/insert#response-body
- airflow.providers.google.cloud.hooks.cloud_sql.CLOUD_SQL_PROXY_DOWNLOAD_URL = 'https://dl.google.com/cloudsql/cloud_sql_proxy.{}.{}'[源码]¶
- airflow.providers.google.cloud.hooks.cloud_sql.CLOUD_SQL_PROXY_VERSION_DOWNLOAD_URL = 'https://storage.googleapis.com/cloudsql-proxy/{}/cloud_sql_proxy.{}.{}'[源码]¶
- class airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLAsyncHook(**kwargs)[源码]¶
继承自:
airflow.providers.google.common.hooks.base_google.GoogleBaseAsyncHook
获取 Google Cloud SQL 异步 Hook 的类。
- class airflow.providers.google.cloud.hooks.cloud_sql.CloudSqlProxyRunner(path_prefix, instance_specification, gcp_conn_id='google_cloud_default', project_id=PROVIDE_PROJECT_ID, sql_proxy_version=None, sql_proxy_binary_path=None)[源码]¶
继承自:
airflow.utils.log.logging_mixin.LoggingMixin
下载 cloud-sql-proxy 并将其作为 Python 进程的子进程运行。
需要下载并启动 cloud-sql-proxy,然后才能通过数据库连接连接到 Google Cloud SQL 实例。它会建立到数据库的安全隧道连接。它使用通过配置传递的 Google Cloud 凭据进行授权。
更多关于此代理的详情可在此处找到: https://cloud.google.com/sql/docs/mysql/sql-proxy
- 参数:
path_prefix (str) – 代理将下载到的唯一路径前缀,以及用于创建 unix 套接字目录的前缀。
instance_specification (str) – 要连接代理的实例规格。应以 https://cloud.google.com/sql/docs/mysql/sql-proxy#multiple-instances 中 -instances 参数描述的形式指定(通常对于 UNIX 套接字连接为
<project>:<region>:<instance>
形式,对于 TCP 连接为<project>:<region>:<instance>=tcp:<port>
形式)。gcp_conn_id (str) – 用于身份验证的 Google Cloud 连接 ID
project_id (str) – 要连接到的 Google Cloud 项目的可选 ID - 它会覆盖从 Google Cloud 连接获取的默认项目 ID。
sql_proxy_version (str | None) – 要下载的 SQL 代理特定版本(例如 'v1.13')。默认下载最新版本。
sql_proxy_binary_path (str | None) – 如果指定,则将使用指定路径下的代理,而不是动态生成。这意味着如果该路径下不存在二进制文件,它也将被下载。
- sql_proxy_process: subprocess.Popen | None = None[源码]¶
- airflow.providers.google.cloud.hooks.cloud_sql.CONNECTION_URIS: dict[str, dict[str, dict[str, str]]][source]¶
- airflow.providers.google.cloud.hooks.cloud_sql.CLOUD_SQL_VALID_DATABASE_TYPES = ['postgres', 'mysql'][source]¶
- class airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLDatabaseHook(gcp_cloudsql_conn_id='google_cloud_sql_default', gcp_conn_id='google_cloud_default', impersonation_chain=None, default_gcp_project_id=None, sql_proxy_binary_path=None, ssl_cert=None, ssl_key=None, ssl_root_cert=None, ssl_secret_id=None, **kwargs)[source]¶
基类:
airflow.hooks.base.BaseHook
为 Google Cloud SQL 提供数据库连接配置(gcpcloudsqldb:// 类型的连接)。
此 Hook 是一个“元” Hook。它不执行实际的连接。
它的作用是检索 gcpcloudsql:// 连接中配置的所有参数,根据需要启动/停止 Cloud SQL Proxy,在数据库中动态生成 Postgres 或 MySQL 连接,并返回实际的 Postgres 或 MySQL Hook。返回的 Postgres/MySQL Hook 将按照配置使用直接连接或 Cloud SQL Proxy 的套接字/TCP 连接。
Hook 的主要参数从标准 URI 组件中检索:
user - 用于向数据库进行身份验证的用户名(来自 URI 的登录部分)。
password - 用于向数据库进行身份验证的密码(来自 URI 的密码部分)。
public_ip - 公共连接要连接到的 IP 地址(来自 URI 的主机部分)。
public_port - 公共连接要连接到的端口(来自 URI 的端口部分)。
database - 要连接的数据库(来自 URI 的 schema 部分)。
sql_proxy_binary_path - Cloud SQL Proxy 二进制文件的可选路径。如果未指定二进制文件或二进制文件不存在,则会自动下载。
剩余参数从 extras 中检索(URI 查询参数):
- project_id - 可选,Cloud SQL 实例所在的 Google Cloud 项目。
实例存在。如果缺失,则使用传入的默认项目 ID。
instance - Cloud SQL 数据库实例的实例名称。
location - Cloud SQL 实例的位置(例如 europe-west1)。
database_type - 数据库实例的类型(MySQL 或 Postgres)。
use_proxy - (默认为 False)是否应使用 SQL Proxy 连接到 Cloud SQL DB。
use_ssl - (默认为 False)连接到 Cloud SQL DB 时是否应使用 SSL。不能同时使用 Proxy 和 SSL。
use_iam - (默认为 False)连接到 Cloud SQL DB 时是否应使用 IAM。使用 IAM 时,密码字段应为空字符串。
sql_proxy_use_tcp - (默认为 False)如果设置为 true,则通过 Proxy 使用 TCP 进行连接,否则使用 UNIX 套接字。
sql_proxy_version - 要下载的 Proxy 的特定版本(例如 v1.13)。如果未指定,则下载最新版本。
sslcert - 使用 SSL 时用于身份验证的客户端证书路径。
sslkey - 使用 SSL 时用于身份验证的客户端私钥路径。
sslrootcert - 使用 SSL 时用于身份验证的服务器证书路径。
- 参数:
gcp_cloudsql_conn_id (str) – 连接的 URL
gcp_conn_id (str) – 用于连接 Google Cloud 以进行 cloud-sql-proxy 身份验证的连接 ID。
default_gcp_project_id (str | None) – 如果连接 URL 中未指定 project_id,则使用的默认项目 ID。
ssl_cert (str | None) – 可选。使用 SSL 时用于身份验证的客户端证书路径。覆盖连接字段
sslcert
。ssl_key (str | None) – 可选。使用 SSL 时用于身份验证的客户端私钥路径。覆盖连接字段
sslkey
。ssl_root_cert (str | None) – 可选。使用 SSL 时用于身份验证的服务器证书路径。覆盖连接字段
sslrootcert
。ssl_secret_id (str | None) –
可选。Google Cloud Secret Manager 中存储 SSL 证书的 Secret ID,格式如下:
- {‘sslcert’: ‘’,
’sslkey’: ‘’, ‘sslrootcert’: ‘’}
覆盖连接字段
sslcert
、sslkey
、sslrootcert
。请注意,根据 Secret Manager 的要求,上述字典应保存为字符串并使用 base64 编码。请注意,此参数与ssl_cert
、ssl_key
、ssl_root_cert
参数不兼容。
- db_hook: airflow.hooks.base.BaseHook | None = None[source]¶
- reserved_tcp_socket: socket.socket | None = None[source]¶
- get_sqlproxy_runner()[source]¶
获取 Cloud SQL Proxy 运行器。
它用于管理每个任务的 Proxy 生命周期。
- 返回:
Cloud SQL Proxy 运行器。
- 返回类型: