airflow.providers.google.cloud.hooks.cloud_sql

此模块包含一个 Google Cloud SQL Hook。

属性

UNIX_PATH_MAX

TIME_TO_SLEEP_IN_SECONDS

CLOUD_SQL_PROXY_VERSION_REGEX

CLOUD_SQL_PROXY_DOWNLOAD_URL

CLOUD_SQL_PROXY_VERSION_DOWNLOAD_URL

CONNECTION_URIS

CLOUD_SQL_VALID_DATABASE_TYPES

CloudSqlOperationStatus

操作状态的辅助类。

CloudSQLHook

Google Cloud SQL API 的 Hook。

CloudSQLAsyncHook

获取 Google Cloud SQL 异步 Hook 的类。

CloudSqlProxyRunner

下载 cloud-sql-proxy 并将其作为 Python 进程的子进程运行。

CloudSQLDatabaseHook

为 Google Cloud SQL 提供数据库连接配置(gcpcloudsqldb:// 类型的连接)。

模块内容

airflow.providers.google.cloud.hooks.cloud_sql.UNIX_PATH_MAX = 108[源码]
airflow.providers.google.cloud.hooks.cloud_sql.TIME_TO_SLEEP_IN_SECONDS = 20[源码]
airflow.providers.google.cloud.hooks.cloud_sql.CLOUD_SQL_PROXY_VERSION_REGEX[源码]
class airflow.providers.google.cloud.hooks.cloud_sql.CloudSqlOperationStatus[源码]

操作状态的辅助类。

PENDING = 'PENDING'[源码]
RUNNING = 'RUNNING'[源码]
DONE = 'DONE'[源码]
UNKNOWN = 'UNKNOWN'[源码]
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) – 这是用于模拟的可选服务账号,使用短期凭据。

conn_name_attr = 'gcp_conn_id'[源码]
default_conn_name = 'google_cloud_sql_default'[源码]
conn_type = 'gcpcloudsql'[源码]
hook_name = 'Google Cloud SQL'[源码]
api_version[源码]
get_conn()[源码]

获取 Cloud SQL 的连接。

返回:

Google Cloud SQL 服务对象。

返回类型:

googleapiclient.discovery.Resource

get_instance(instance, project_id)[源码]

获取包含 Cloud SQL 实例信息的资源。

参数:
  • instance (str) – 数据库实例 ID。不包含项目 ID。

  • project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。

返回:

一个 Cloud SQL 实例资源。

返回类型:

dict

create_instance(body, project_id)[源码]

创建新的 Cloud SQL 实例。

参数:
返回:

None

返回类型:

None

patch_instance(body, instance, project_id)[源码]

更新 Cloud SQL 实例的设置。

注意:这不是部分更新,因此必须包含所有要保留的设置的值。

参数:
返回:

None

返回类型:

None

delete_instance(instance, project_id)[源码]

删除 Cloud SQL 实例。

参数:
  • project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。

  • instance (str) – Cloud SQL 实例 ID。不包含项目 ID。

返回:

None

返回类型:

None

get_database(instance, database, project_id)[源码]

从 Cloud SQL 实例获取数据库资源。

参数:
  • instance (str) – 数据库实例 ID。不包含项目 ID。

  • database (str) – 实例中的数据库名称。

  • project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。

返回:

一个 Cloud SQL 数据库资源,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases#resource 中所述。

返回类型:

dict

create_database(instance, body, project_id)[源码]

在 Cloud SQL 实例内创建新的数据库。

参数:
返回:

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

参数:
返回:

None

返回类型:

None

delete_database(instance, database, project_id)[源码]

从 Cloud SQL 实例删除数据库。

参数:
  • instance (str) – 数据库实例 ID。不包含项目 ID。

  • database (str) – 要在该实例中删除的数据库名称。

  • project_id (str) – 包含该实例的项目的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认项目 ID。

返回:

None

返回类型:

None

export_instance(instance, body, project_id)[源码]

将数据从 Cloud SQL 实例导出到 Cloud Storage 存储桶,格式为 SQL dump 或 CSV 文件。

参数:
返回:

None

import_instance(instance, body, project_id)[源码]

从 Cloud Storage 中的 SQL dump 或 CSV 文件将数据导入到 Cloud SQL 实例。

参数:
返回:

None

返回类型:

None

clone_instance(instance, body, project_id)[源码]

将一个实例克隆到目标实例。

参数:
返回:

None

返回类型:

None

create_ssl_certificate(instance, body, project_id)[源码]

为 Cloud SQL 实例创建 SSL 证书。

参数:
返回:

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 的类。

sync_hook_class[源码]
async get_operation_name(project_id, operation_name, session)[源码]
async get_operation(project_id, operation_name)[源码]
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) – 如果指定,则将使用指定路径下的代理,而不是动态生成。这意味着如果该路径下不存在二进制文件,它也将被下载。

path_prefix[源码]
sql_proxy_was_downloaded = False[源码]
sql_proxy_version = None[源码]
download_sql_proxy_dir = None[源码]
sql_proxy_process: subprocess.Popen | None = None[源码]
instance_specification[源码]
project_id = None[源码]
gcp_conn_id = 'google_cloud_default'[source]
command_line_parameters: list[str] = [][source]
cloud_sql_proxy_socket_directory[source]
sql_proxy_path = 'Uninferable_cloud_sql_proxy'[source]
credentials_path[source]
start_proxy()[source]

启动 Cloud SQL Proxy。

如果启动了 Proxy,请记住停止它!

stop_proxy()[source]

停止运行中的 Proxy。

在停止使用 Proxy 后应该停止它。

get_proxy_version()[source]

返回 Cloud SQL Proxy 的版本。

get_socket_path()[source]

获取 Cloud SQL Proxy 使用的 UNIX 套接字路径。

返回:

Proxy 创建的套接字的动态生成路径。

返回类型:

str

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’: ‘’}

    覆盖连接字段 sslcertsslkeysslrootcert。请注意,根据 Secret Manager 的要求,上述字典应保存为字符串并使用 base64 编码。请注意,此参数与 ssl_certssl_keyssl_root_cert 参数不兼容。

conn_name_attr = 'gcp_cloudsql_conn_id'[source]
default_conn_name = 'google_cloud_sqldb_default'[source]
conn_type = 'gcpcloudsqldb'[source]
hook_name = 'Google Cloud SQL Database'[source]
gcp_conn_id = 'google_cloud_default'[source]
gcp_cloudsql_conn_id = 'google_cloud_sql_default'[source]
impersonation_chain = None[source]
cloudsql_connection[source]
extras[source]
project_id[source]
instance[source]
database[source]
location[source]
database_type[source]
use_proxy = False[source]
use_ssl = False[source]
use_iam = False[source]
sql_proxy_use_tcp = False[source]
sql_proxy_version[source]
sql_proxy_binary_path = None[source]
public_ip[source]
public_port[source]
ssl_cert = None[source]
ssl_key = None[source]
ssl_root_cert = None[source]
ssl_secret_id = None[source]
sql_proxy_tcp_port = None[source]
sql_proxy_unique_path: str | None = None[source]
db_hook: airflow.hooks.base.BaseHook | None = None[source]
reserved_tcp_socket: socket.socket | None = None[source]
db_conn_id = ''[source]
property sslcert: str | None[source]
property sslkey: str | None[source]
property sslrootcert: str | None[source]
validate_ssl_certs()[source]

SSL 证书验证器。

返回:

None

返回类型:

None

validate_socket_path_length()[source]

验证套接字路径长度。

返回:

None 或抛出 AirflowException 异常

返回类型:

None

create_connection()[source]

创建连接。

连接 ID 将根据是否使用 Proxy、TCP、UNIX 套接字、SSL 随机生成。

get_sqlproxy_runner()[source]

获取 Cloud SQL Proxy 运行器。

它用于管理每个任务的 Proxy 生命周期。

返回:

Cloud SQL Proxy 运行器。

返回类型:

CloudSqlProxyRunner

get_database_hook(connection)[source]

获取数据库 Hook。

这是实际的 Postgres 或 MySQL 数据库 Hook,它使用 Proxy 或直接连接到 Google Cloud SQL 数据库。

cleanup_database_hook()[source]

使用后清理数据库 Hook。

reserve_free_tcp_port()[source]

保留供 Cloud SQL Proxy 使用的空闲 TCP 端口。

free_reserved_port()[source]

释放 TCP 端口。

使其立即可供 Cloud SQL Proxy 使用。

此条目是否有帮助?