Workflows 中的代管連線管道可讓您從自訂第三方資料來源擷取中繼資料,並匯入 Knowledge Catalog (原稱 Dataplex Universal Catalog)。您可以視需要或定期執行管道,讓目錄保持同步,以便探索、搜尋及管理外部資產。
如要進一步瞭解代管連線,請參閱「代管連線總覽」。
事前準備
匯入中繼資料前,請先完成本節中的工作。
建構連接器
連接器會從資料來源擷取中繼資料,並產生可由 Knowledge Catalog 匯入的中繼資料匯入檔案。連接器是 Artifact Registry 映像檔,可在 Managed Service for Apache Spark 上執行。
建構自訂連接器,從第三方來源擷取中繼資料。
如需連接器範例,做為建構連接器的參考範本,請參閱「開發自訂連接器以匯入中繼資料」。
設定 Google Cloud 資源
-
啟用 Workflows、Dataproc、Cloud Storage、Dataplex、Secret Manager、Artifact Registry 和 Cloud Scheduler API (如有尚未啟用的 API)。
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。如果您不打算按照排程執行管道,則不需要啟用 Cloud Scheduler API。
在 Secret Manager 中建立密鑰,儲存第三方資料來源的憑證。
設定虛擬私有雲 (VPC) 網路,以便執行 Managed Service for Apache Spark 工作負載。
建立 Cloud Storage bucket,用於儲存中繼資料匯入檔案。
建立下列 Knowledge Catalog 資源:
必要的角色
服務帳戶代表工作流程的身分,並決定工作流程具備的權限,以及可存取的 Google Cloud 資源。您需要 Workflows 的服務帳戶 (用於執行管道),以及 Managed Service for Apache Spark 的服務帳戶 (用於執行連接器)。
您可以使用 Compute Engine 預設服務帳戶 (PROJECT_NUMBER-compute@developer.gserviceaccount.com),或建立自己的服務帳戶,執行代管連線管道。
控制台
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
選取要匯入中繼資料的專案。
按一下「 授予存取權」,然後輸入服務帳戶的電子郵件地址。
將下列角色指派給服務帳戶:
- 記錄檔寫入者 (
roles/logging.logWriter) - Dataplex 項目群組擁有者 (
roles/dataplex.entryGroupOwner) - Dataplex 工作中繼資料擁有者 (
roles/dataplex.metadataJobOwner) - Dataplex Catalog 編輯者 (
roles/dataplex.catalogEditor) - Dataproc 編輯者 (
roles/dataproc.editor) - Dataproc worker (
roles/dataproc.worker) - Secret Manager 密鑰存取者 (
roles/secretmanager.secretAccessor):用於儲存資料來源憑證的密鑰 - Storage 物件使用者 (
roles/storage.objectUser) - 位於 Cloud Storage bucket - Artifact Registry 讀取者 (
roles/artifactregistry.reader):適用於含有連接器映像檔的 Artifact Registry 存放區 - 服務帳戶使用者 (
roles/iam.serviceAccountUser):如果您使用不同的服務帳戶,請將這個角色授予執行 Workflows 的服務帳戶,並套用至執行 Managed Service for Apache Spark 批次工作的服務帳戶 - Workflows 叫用者 (
roles/workflows.invoker):如要排定管道
- 記錄檔寫入者 (
儲存變更。
gcloud
將角色授予服務帳戶。執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.entryGroupOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.metadataJobOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.catalogEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.editor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.worker更改下列內容:
-
PROJECT_ID:要匯入中繼資料的目標 Google Cloud專案名稱。 SERVICE_ACCOUNT_ID:服務帳戶,例如my-service-account@my-project.iam.gserviceaccount.com。
-
在資源層級,將下列角色授予服務帳戶:
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/secretmanager.secretAccessor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/storage.objectUser \ --condition=resource.name.startsWith('projects/_/buckets/BUCKET_ID') gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=REPOSITORY_LOCATION \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/artifactregistry.reader更改下列內容:
SECRET_ID:儲存資料來源憑證的 Secret ID。格式為projects/PROJECT_ID/secrets/SECRET_ID。BUCKET_ID:Cloud Storage bucket 的名稱。REPOSITORY:含有連接器映像檔的 Artifact Registry 存放區。REPOSITORY_LOCATION:託管存放區的 Google Cloud位置。
將服務帳戶使用者 (
roles/iam.serviceAccountUser) 角色,授予執行 Workflows 的服務帳戶,該角色位於執行 Managed Service for Apache Spark 批次工作的服務帳戶。即使 Workflows 和 Managed Service for Apache Spark 使用相同的服務帳戶,您仍須授予這個角色。gcloud iam service-accounts add-iam-policy-binding \ serviceAccount:SERVICE_ACCOUNT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role='roles/iam.serviceAccountUser'如果使用不同的服務帳戶,
--member旗標的值就是執行 Managed Service for Apache Spark 批次工作的服務帳戶。如要排定管道,請將 Workflows 叫用者 (
roles/workflows.invoker) 角色授予服務帳戶:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/workflows.invoker
匯入中繼資料
如要匯入中繼資料,請建立並執行會執行代管連線管道的工作流程。這個管道會從自訂資料來源擷取中繼資料、建立必要的項目群組,並將中繼資料匯入 Knowledge Catalog。您也可以建立執行管道的時間表。
控制台
建立工作流程。用下列資訊作答:
- 服務帳戶:您在本文件「必要角色」一節中設定的服務帳戶。
加密:選取「Google-managed encryption key」。
定義工作流程:提供下列定義檔:
如要視需要執行管道,請執行工作流程。
提供下列執行階段引數:
更改下列內容:
-
PROJECT_ID:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID:Managed Service for Apache Spark 和中繼資料匯入工作的執行位置,以及中繼資料的匯入位置。 Google Cloud -
ENTRY_GROUP_ID:要匯入中繼資料的項目群組 ID。項目群組 ID 可以包含小寫英文字母、數字和連字號。這個項目群組的完整資源名稱為
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID。 -
CREATE_ENTRY_GROUP_BOOLEAN:如果專案中沒有項目群組,而您希望管道建立該群組,請將這個值設為true。 -
BUCKET_ID:Cloud Storage bucket 的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
SERVICE_ACCOUNT_ID:您在本文件「必要角色」一節中設定的服務帳戶。服務帳戶會在 Managed Service for Apache Spark 中執行連接器。 -
ADDITIONAL_CONNECTOR_ARGUMENTS:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發中繼資料匯入專用的自訂連接器」。請將每個引數括在雙引號中,並以半形逗號分隔引數。 -
CONTAINER_IMAGE:託管於 Artifact Registry 的連接器自訂容器映像檔。 -
ENTRY_TYPES:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
ASPECT_TYPES:要匯入的切面類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
選用:針對
NETWORK_TAGS引數,提供網路標記清單。 -
選用:在
NETWORK_URI引數中,提供連線至資料來源的虛擬私有雲網路 URI。如果提供網路,請省略子網路引數。 -
選用:在
SUBNETWORK_URI引數中,提供連至資料來源的子網路 URI。如果提供子網路,請省略網路引數。
視匯入的中繼資料量而定,管道可能需要幾分鐘或更久的時間才能執行。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Knowledge Catalog 搜尋匯入的中繼資料。
-
選用:如要依排程執行管道,請使用 Cloud Scheduler 建立排程。用下列資訊作答:
- 頻率:定義管道執行排程的 Unix-cron 運算式。
- 工作流程引數:連接器的執行階段引數,如上一個步驟所述。
- 服務帳戶:服務帳戶。服務帳戶會管理排程器。
gcloud
將下列工作負載定義儲存為 YAML 檔案:
定義 Bash 變數、建立工作流程,並視需要建立執行管道的時間表:
更改下列內容:
-
PROJECT_ID:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID:Managed Service for Apache Spark 和中繼資料匯入工作的執行位置,以及中繼資料的匯入位置。 Google Cloud -
SERVICE_ACCOUNT_ID:您在本文件「必要角色」一節中設定的服務帳戶。 WORKFLOW_DEFINITION_FILE:工作流程定義 YAML 檔案的路徑。WORKFLOW_NAME:工作流程名稱。WORKFLOW_ARGUMENTS:要傳遞至連接器的執行階段引數。引數採用 JSON 格式:在 Cloud Scheduler 中,引號字串內的雙引號會使用反斜線 (\) 逸出。例如:
--message-body="{\"argument\": \"{\\\"key\\\": \\\"value\\\"}\"}"。更改下列內容:
-
ENTRY_GROUP_ID:要匯入中繼資料的項目群組 ID。項目群組 ID 可以包含小寫英文字母、數字和連字號。這個項目群組的完整資源名稱為
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID。 -
CREATE_ENTRY_GROUP_BOOLEAN:如果專案中沒有項目群組,而您希望管道建立該群組,請將這個值設為true。 -
BUCKET_ID:Cloud Storage bucket 的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
ADDITIONAL_CONNECTOR_ARGUMENTS:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發中繼資料匯入作業的自訂連接器」。 -
CONTAINER_IMAGE:託管於 Artifact Registry 的連接器自訂容器映像檔。 -
ENTRY_TYPES:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
ASPECT_TYPES:要匯入的切面類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
選用:針對
NETWORK_TAGS引數,提供網路標記清單。 -
選用:在
NETWORK_URI引數中,提供連線至資料來源的虛擬私有雲網路 URI。如果提供網路,請省略子網路引數。 -
選用:在
SUBNETWORK_URI引數中,提供連至資料來源的子網路 URI。如果提供子網路,請省略網路引數。
-
CRON_SCHEDULE_EXPRESSION:定義管道執行排程的 cron 運算式。舉例來說,如要在每天午夜執行排程,請使用0 0 * * *運算式。
-
如要視需要執行管道,請執行工作流程:
工作流程引數採用 JSON 格式,但未逸出。
視匯入的中繼資料量而定,工作流程可能需要幾分鐘或更久的時間才能執行。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Knowledge Catalog 搜尋匯入的中繼資料。
Terraform
-
存放區包含下列 Terraform 檔案:
main.tf:定義要建立的 Google Cloud 資源。variables.tf:宣告變數。byo-connector.tfvars:定義代管連線管道的變數。
編輯
.tfvars檔案,將預留位置替換為連接器的資訊。更改下列內容:
-
PROJECT_ID:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID:Managed Service for Apache Spark 和中繼資料匯入工作的執行位置,以及中繼資料的匯入位置。 Google Cloud -
SERVICE_ACCOUNT_ID:您在本文件「必要角色」一節中設定的服務帳戶。 -
CRON_SCHEDULE_EXPRESSION:定義管道執行排程的 cron 運算式。舉例來說,如要在每天午夜執行排程,請使用0 0 * * *運算式。 -
ENTRY_GROUP_ID:要匯入中繼資料的項目群組 ID。項目群組 ID 可以包含小寫英文字母、數字和連字號。這個項目群組的完整資源名稱為
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID。 -
CREATE_ENTRY_GROUP_BOOLEAN:如果專案中沒有項目群組,而您希望管道建立該群組,請將這個值設為true。 -
BUCKET_ID:Cloud Storage bucket 的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
ADDITIONAL_CONNECTOR_ARGUMENTS:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發中繼資料匯入專用的自訂連接器」。請將每個引數括在雙引號中,並以半形逗號分隔引數。 -
CONTAINER_IMAGE:託管於 Artifact Registry 的連接器自訂容器映像檔。 -
ENTRY_TYPES:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
ASPECT_TYPES:要匯入的切面類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID。LOCATION_ID必須與您匯入中繼資料的Google Cloud 位置相同,或是global。 -
選用:針對
NETWORK_TAGS引數,提供網路標記清單。 -
選用:在
NETWORK_URI引數中,提供連線至資料來源的虛擬私有雲網路 URI。如果提供網路,請省略子網路引數。 -
選用:在
SUBNETWORK_URI引數中,提供連至資料來源的子網路 URI。如果提供子網路,請省略網路引數。
-
初始化 Terraform:
terraform init使用
.tfvars檔案驗證 Terraform:terraform plan --var-file=CONNECTOR_VARIABLES_FILE.tfvars將
CONNECTOR_VARIABLES_FILE替換為變數定義檔案的名稱。使用
.tfvars檔案部署 Terraform:terraform apply --var-file=CONNECTOR_VARIABLES_FILE.tfvarsTerraform 會在指定專案中建立工作流程和 Cloud Scheduler 工作。Workflows 會按照您指定的排程執行管道。
視匯入的中繼資料量而定,工作流程可能需要幾分鐘或更久的時間才能執行。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Knowledge Catalog 搜尋匯入的中繼資料。
查看工作記錄檔
使用 Cloud Logging 查看代管連線管道的記錄。記錄酬載包含 Managed Service for Apache Spark 批次工作和中繼資料匯入工作的記錄連結 (如適用)。詳情請參閱「查看工作流程記錄」。
疑難排解
請嘗試下列疑難排解建議:
- 將中繼資料工作的匯入工作記錄層級,設為使用偵錯層級記錄,而非資訊層級記錄。
- 查看 Managed Service for Apache Spark 批次工作 (用於連接器執行作業) 和中繼資料匯入工作的記錄。詳情請參閱「查詢 Managed Service for Apache Spark 記錄」和「查詢中繼資料工作記錄」。
- 如果無法使用管道匯入項目,且錯誤訊息未提供足夠資訊,請嘗試在測試項目群組中,建立具有相同詳細資料的自訂項目。詳情請參閱「建立自訂項目」。