airflow.providers.google.cloud.hooks.cloud_sql

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

模块内容

CloudSqlOperationStatus

具有操作状态的辅助类。

CloudSQLHook

用于 Google Cloud SQL API 的 Hook。

CloudSQLAsyncHook

用于获取 Google Cloud SQL 异步 Hook 的类。

CloudSqlProxyRunner

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

CloudSQLDatabaseHook

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

属性

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

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'[源代码]
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 连接中的默认 project_id。

返回

Cloud SQL 实例资源。

返回类型

dict

create_instance(body, project_id)[source]

创建一个新的 Cloud SQL 实例。

参数
返回

None

返回类型

None

patch_instance(body, instance, project_id)[source]

更新 Cloud SQL 实例的设置。

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

参数
返回

None

返回类型

None

delete_instance(instance, project_id)[source]

删除 Cloud SQL 实例。

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

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

返回

None

返回类型

None

get_database(instance, database, project_id)[source]

从 Cloud SQL 实例检索数据库资源。

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

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

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

返回

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

返回类型

dict

create_database(instance, body, project_id)[source]

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

参数
返回

None

返回类型

None

patch_database(instance, database, body, project_id)[source]

更新 Cloud SQL 实例内的数据库资源。

此方法支持 patch 语义。请参阅 https://cloud.google.com/sql/docs/mysql/admin-api/how-tos/performance#patch

参数
返回

None

返回类型

None

delete_database(instance, database, project_id)[source]

从 Cloud SQL 实例中删除数据库。

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

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

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

返回

None

返回类型

None

export_instance(instance, body, project_id)[source]

将 Cloud SQL 实例中的数据导出到 Cloud Storage 存储桶,作为 SQL 转储或 CSV 文件。

参数
返回

None

import_instance(instance, body, project_id)[source]

将 Cloud Storage 中 SQL 转储或 CSV 文件中的数据导入 Cloud SQL 实例。

参数
返回

None

返回类型

None

clone_instance(instance, body, project_id)[source]

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

参数
  • 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 连接中的默认 project_id。

返回

None

返回类型

None

create_ssl_certificate(instance, body, project_id)[source]

为 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.{}.{}'[source]
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 进程的子进程运行。

在通过数据库连接连接到 Google Cloud SQL 实例之前,需要下载并启动 cloud-sql-proxy。 它建立到数据库的安全隧道连接。它使用配置传递的 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) – 如果指定,则将从指定路径中使用代理,而不是动态生成。 这意味着如果二进制文件不在该路径中,也会下载该文件。

start_proxy()[来源]

启动 Cloud SQL 代理。

如果启动了代理,则必须记住停止它!

stop_proxy()[来源]

停止正在运行的代理。

停止使用代理后,应停止代理。

get_proxy_version()[来源]

返回 Cloud SQL 代理的版本。

get_socket_path()[来源]

检索 Cloud SQL 代理使用的 UNIX 套接字路径。

返回

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

返回类型

str

airflow.providers.google.cloud.hooks.cloud_sql.CONNECTION_URIS: dict[str, dict[str, dict[str, str]]][来源]
airflow.providers.google.cloud.hooks.cloud_sql.CLOUD_SQL_VALID_DATABASE_TYPES = ['postgres', 'mysql'][来源]
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)[来源]

基类: airflow.hooks.base.BaseHook

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

此 hook 是一个“元” hook。 它不执行实际的连接。

它用于检索 gcpcloudsql:// 连接中配置的所有参数,在需要时启动/停止 Cloud SQL 代理,在数据库中动态生成 Postgres 或 MySQL 连接,并返回实际的 Postgres 或 MySQL hook。 返回的 Postgres/MySQL hook 使用直接连接或根据配置使用 Cloud SQL 代理套接字/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 代理连接到 Cloud SQL DB。

  • use_ssl - (默认为 False)是否应使用 SSL 连接到 Cloud SQL DB。您不能同时使用代理和 SSL。

  • use_iam - (默认为 False)是否应使用 IAM 连接到 Cloud SQL DB。使用 IAM 时,密码字段应为空字符串。

  • sql_proxy_use_tcp - (默认为 False)如果设置为 true,则使用 TCP 通过代理连接,否则使用 UNIX 套接字。

  • sql_proxy_version - 要下载的代理的特定版本(例如 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 证书的密钥 ID,格式如下

    {'sslcert': '',

    'sslkey': '', 'sslrootcert': ''}

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

property sslcert: str | None[source]
property sslkey: str | None[source]
property sslrootcert: str | None[source]
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]
validate_ssl_certs()[source]

SSL 证书验证器。

返回

None

返回类型

None

validate_socket_path_length()[source]

验证套接字路径长度。

返回

无或引发 AirflowException

返回类型

None

create_connection()[source]

创建连接。

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

get_sqlproxy_runner()[source]

检索 Cloud SQL Proxy 运行器。

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

返回

Cloud SQL Proxy 运行器。

返回类型

CloudSqlProxyRunner

get_database_hook(connection)[source]

检索数据库 hook。

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

cleanup_database_hook()[source]

在使用后清理数据库 hook。

reserve_free_tcp_port()[source]

预留一个空闲的 TCP 端口,供 Cloud SQL 代理使用。

free_reserved_port()[source]

释放 TCP 端口。

使其可以立即被 Cloud SQL 代理使用。

此条目是否有帮助?