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)[source]¶
创建一个新的 Cloud SQL 实例。
- 参数
body (dict) – Cloud SQL 插入 API 所需的主体,如 https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/insert#request-body 中所述。
project_id (str) – 包含实例的项目 ID。如果设置为 None 或缺失,则使用 Google Cloud 连接中的默认 project_id。
- 返回
None
- 返回类型
None
- patch_instance(body, instance, project_id)[source]¶
更新 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 连接中的默认 project_id。
- 返回
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 中所述。
- 返回类型
- create_database(instance, body, project_id)[source]¶
在 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 连接中的默认 project_id。
- 返回
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。
- 参数
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 连接中的默认 project_id。
- 返回
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 文件。
- 参数
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 连接中的默认 project_id。
- 返回
None
- import_instance(instance, body, project_id)[source]¶
将 Cloud Storage 中 SQL 转储或 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 连接中的默认 project_id。
- 返回
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 证书。
- 参数
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 连接中的默认 project_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.{}.{}'[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 的类。
- 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) – 如果指定,则将从指定路径中使用代理,而不是动态生成。 这意味着如果二进制文件不在该路径中,也会下载该文件。
- 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': ''}
覆盖连接字段
sslcert
、sslkey
、sslrootcert
。请注意,根据 Secret Manager 的要求,提到的字典应保存为字符串,并使用 base64 进行编码。请注意,此参数与参数ssl_cert
、ssl_key
、ssl_root_cert
不兼容。
- get_sqlproxy_runner()[source]¶
检索 Cloud SQL Proxy 运行器。
它用于管理每个任务的代理生命周期。
- 返回
Cloud SQL Proxy 运行器。
- 返回类型