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 要求的 Body,如 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)[原始碼]¶
更新 Cloud SQL 執行個體的設定。
注意:這不是部分更新,因此您必須包含您想要保留的所有設定的值。
- 參數
body (dict) – Cloud SQL patch API 要求的 Body,如 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
- 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) – 請求 Body,如 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)[原始碼]¶
更新 Cloud SQL 執行個體內的資料庫資源。
此方法支援 patch 語意。請參閱 https://cloud.google.com/sql/docs/mysql/admin-api/how-tos/performance#patch。
- 參數
instance (str) – 資料庫執行個體 ID。這不包含專案 ID。
database (str) – 要在執行個體中更新的資料庫名稱。
body (dict) – 請求 Body,如 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
- export_instance(instance, body, project_id)[原始碼]¶
將資料從 Cloud SQL 執行個體匯出到 Cloud Storage 儲存桶,作為 SQL 傾印或 CSV 檔案。
- 參數
instance (str) – Cloud SQL 執行個體的資料庫執行個體 ID。這不包含專案 ID。
body (dict) – 請求 Body,如 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)[原始碼]¶
將資料從 Cloud Storage 中的 SQL 傾印或 CSV 檔案匯入到 Cloud SQL 執行個體。
- 參數
instance (str) – 資料庫執行個體 ID。這不包含專案 ID。
body (dict) – 請求 Body,如 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)[原始碼]¶
將執行個體複製到目標執行個體。
- 參數
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 憑證。
- 參數
instance (str) – Cloud SQL 執行個體 ID。這不包含專案 ID。
body (dict) – 請求 Body,如 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.{}.{}'[原始碼]¶
- 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 憑證進行授權。
有關 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,而不是動態產生。這表示如果二進位檔不存在於該路徑中,也將會下載。
- 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’: ‘’}
覆寫連線欄位
sslcert
、sslkey
、sslrootcert
。請注意,根據 Secret Manager 的要求,上述字典應儲存為字串,並以 base64 編碼。請注意,此參數與參數ssl_cert
、ssl_key
、ssl_root_cert
不相容。
- get_sqlproxy_runner()[source]¶
擷取 Cloud SQL Proxy 執行器。
它用於管理每個任務的 Proxy 生命週期。
- 返回
Cloud SQL Proxy 執行器。
- 返回類型