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)[原始碼]

建立新的 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 連線中的預設 project_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 連線中的預設 project_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 連線中的預設 project_id。

返回

None

返回類型

None

export_instance(instance, body, project_id)[原始碼]

將資料從 Cloud SQL 執行個體匯出到 Cloud Storage 儲存桶,作為 SQL 傾印或 CSV 檔案。

參數
返回

None

import_instance(instance, body, project_id)[原始碼]

將資料從 Cloud Storage 中的 SQL 傾印或 CSV 檔案匯入到 Cloud SQL 執行個體。

參數
返回

None

返回類型

None

clone_instance(instance, body, project_id)[原始碼]

將執行個體複製到目標執行個體。

參數
  • instance (str) – 要複製的資料庫執行個體 ID。這不包含專案 ID。

  • instance – 用於複製的資料庫執行個體 ID。這不包含專案 ID。

  • body (dict) – 請求 Body,如 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)[原始碼]

為 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 憑證進行授權。

有關 Proxy 的更多詳細資訊,請參閱此處: https://cloud.google.com/sql/docs/mysql/sql-proxy

參數
  • path_prefix (str) – Proxy 將下載且為 unix socket 建立目錄的唯一路徑前綴。

  • instance_specification (str) – 要將 Proxy 連線到的執行個體規格。它應以 https://cloud.google.com/sql/docs/mysql/sql-proxy#multiple-instances 中 -instances 參數(通常為 <project>:<region>:<instance> 形式,用於 UNIX socket 連線;以及 <project>:<region>:<instance>=tcp:<port> 形式,用於 TCP 連線)中所述的形式指定。

  • gcp_conn_id (str) – 用於驗證的 Google Cloud 連線 ID

  • project_id (str) – 要連線到的 Google Cloud 專案的可選 ID - 它會覆寫從 Google Cloud 連線取得的預設專案 ID。

  • sql_proxy_version (str | None) – 要下載的 SQL Proxy 的特定版本(例如 ‘v1.13’)。預設會下載最新版本。

  • sql_proxy_binary_path (str | None) – 如果指定,則將從指定的路徑使用 Proxy,而不是動態產生。這表示如果二進位檔不存在於該路徑中,也將會下載。

start_proxy()[原始碼]

啟動 Cloud SQL Proxy。

如果您啟動了 Proxy,則必須記得停止 Proxy!

stop_proxy()[原始碼]

停止運行的 Proxy。

您應該在使用完 Proxy 後停止 Proxy。

get_proxy_version()[原始碼]

返回 Cloud SQL Proxy 的版本。

get_socket_path()[原始碼]

檢索 Cloud SQL Proxy 使用的 UNIX socket 路徑。

返回

Proxy 建立的 Socket 的動態產生路徑。

返回類型

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 為「meta」型 Hook。它不會執行實際連線。

其用途為擷取 gcpcloudsql:// 連線中設定的所有參數、在需要時啟動/停止 Cloud SQL Proxy、在資料庫中動態產生 Postgres 或 MySQL 連線,並傳回實際的 Postgres 或 MySQL Hook。傳回的 Postgres/MySQL Hook 會使用直接連線或 Cloud SQL Proxy socket/TCP,視設定而定。

Hook 的主要參數是從標準 URI 組件中擷取的

  • user - 用於驗證資料庫的使用者名稱 (來自 URI 的登入資訊)。

  • password - 用於驗證資料庫的密碼 (來自 URI 的密碼)。

  • public_ip - 用於公開連線的 IP (來自 URI 的主機)。

  • public_port - 用於公開連線的 Port (來自 URI 的 Port)。

  • 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) 是否應使用 SSL 連線到 Cloud SQL DB。您不能同時使用 Proxy 和 SSL。

  • use_iam - (預設 False) 是否應使用 IAM 連線到 Cloud SQL DB。使用 IAM 時,密碼欄位應為空字串。

  • sql_proxy_use_tcp - (預設 False) 如果設定為 true,則 TCP 用於透過 Proxy 連線,否則使用 UNIX socket。

  • 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 憑證的密碼 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]

驗證 Socket 路徑長度。

返回

無傳回值或拋出 AirflowException

返回類型

None

create_connection()[source]

建立連線。

連線 ID 將根據是否使用 Proxy、TCP、UNIX socket、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 Port。

free_reserved_port()[source]

釋放 TCP Port。

使其立即準備好供 Cloud SQL Proxy 使用。

此條目是否有幫助?