Azure 事件中樞匯入主題可讓您從 Azure 事件中樞持續擷取資料,做為外部來源並匯入 Pub/Sub。接著,您可以將資料串流至 Pub/Sub 支援的任何目的地。
本文說明如何建立及管理 Azure 事件中樞匯入主題。如要建立標準主題,請參閱「建立標準主題」一文。
如要進一步瞭解匯入主題,請參閱「關於匯入主題」。
事前準備
進一步瞭解 Pub/Sub 發布程序。
設定工作負載身分聯盟,讓Google Cloud 存取外部串流服務。
必要角色和權限
如要取得建立及管理 Azure Event Hubs 匯入主題所需的權限,請要求管理員為您授予主題或專案的 Pub/Sub 編輯者 (roles/pubsub.editor
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備建立及管理 Azure 事件中樞匯入主題所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立及管理 Azure 事件中樞匯入主題,您必須具備下列權限:
-
建立匯入主題:
pubsub.topics.create
-
刪除匯入主題:
pubsub.topics.delete
-
取得匯入主題:
pubsub.topics.get
-
列出匯入主題:
pubsub.topics.list
-
發布至匯入主題:
pubsub.topics.publish and pubsub.serviceAgent
-
更新匯入主題:
pubsub.topics.update
-
取得匯入主題的身分與存取權管理政策:
pubsub.topics.getIamPolicy
-
設定匯入主題的 IAM 政策:
pubsub.topics.setIamPolicy
您可以在專案層級和個別資源層級設定存取權控管。
設定同盟身分,以便存取 Azure 事件中樞
Workload Identity 聯盟可讓 Google Cloud 服務存取 Google Cloud外部執行的工作負載。使用身分聯盟時,您不需要維護或傳遞憑證,即可存取其他雲端中的資源。 Google Cloud 您可以改用工作負載本身的 ID 向 Google Cloud 進行驗證,並存取資源。
在 Google Cloud中建立服務帳戶
這個步驟可以省略。如果您已有服務帳戶,可以在這個程序中使用該帳戶,不必建立新的服務帳戶。如果您使用現有的服務帳戶,請前往「記錄服務帳戶的專屬 ID」進行下一個步驟。
對於 Azure 事件中樞匯入主題,Pub/Sub 會使用服務帳戶做為身分,從 Azure 存取資源。
如要進一步瞭解如何建立服務帳戶,包括必要條件、必要角色和權限,以及命名規範,請參閱「建立服務帳戶」。建立服務帳戶後,您可能需要等待 60 秒以上,才能使用該服務帳戶。這種行為的發生,是因為讀取作業最終會保持一致性,因此需要一段時間,新服務帳戶才會顯示。
記下服務帳戶專屬 ID
您需要服務帳戶專屬 ID,才能在 Azure 中設定應用程式註冊。
前往 Google Cloud 控制台的「Service account」(服務帳戶) 詳細資料頁面。
按一下您剛建立的服務帳戶,或打算使用的服務帳戶。
在「服務帳戶詳細資料」頁面中,記下專屬 ID 編號。
您需要這個 ID,才能在工作流程中設定 Azure 的應用程式註冊。
為 Pub/Sub 服務帳戶新增服務帳戶憑證建立者角色
服務帳戶憑證建立者角色 (roles/iam.serviceAccountTokenCreator
) 可讓主體為服務帳戶建立短期憑證。這些權杖或憑證可用於模擬服務帳戶。
如要進一步瞭解服務帳戶模擬功能,請參閱服務帳戶模擬功能。
您也可以在這個程序中新增 Pub/Sub 發布者角色 (roles/pubsub.publisher
)。如要進一步瞭解角色和新增原因,請參閱「將 Pub/Sub 發布者角色新增至 Pub/Sub 服務帳戶」。
前往 Google Cloud 控制台的「IAM」頁面。
按一下「包含 Google提供的角色授予項目」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
的服務帳戶。按一下這個服務帳戶的「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並點選「服務帳戶憑證建立者角色」 (
roles/iam.serviceAccountTokenCreator
)。按一下 [儲存]。
使用 Identity 聯盟建立應用程式註冊
如要從 Azure 事件中樞擷取資料,請向 Microsoft Identity 平台註冊應用程式,並為服務帳戶啟用身分聯盟。這樣一來,服務帳戶就能向 Azure 進行驗證。
如要進一步瞭解如何透過 Microsoft Identity Platform 註冊應用程式,請參閱 Azure 應用程式註冊快速入門。
登入 Azure 入口網站,然後開啟「Microsoft Entra ID」頁面。
在導覽窗格中,依序按一下「管理」 >「應用程式註冊」。
按一下 [新增註冊]。
為應用程式命名,並將「支援的帳戶類型」設為「僅限個人 Microsoft 帳戶」以外的任何選項。
如要註冊應用程式,請按一下「Register」。
開啟應用程式,然後依序點選「管理」>「憑證和密鑰」。
按一下「新增憑證」。
如要設定同盟憑證,請按一下「其他簽發者」。
在「Issuer」欄位中輸入
https://accounts.google.com
。在「值」欄位中,輸入 Pub/Sub 服務帳戶的專屬 ID。
為同盟身分命名,然後按一下「新增」。
將角色指派給已註冊的應用程式
如要讓 Pub/Sub 從 Azure 事件中樞讀取資料,請將必要角色授予已註冊的應用程式。
登入 Azure 入口網站,然後開啟 Event Hubs 命名空間。
如要開啟命名空間,請在搜尋中輸入「Event Hubs」,然後按一下其中一個命名空間。
按一下側欄中的「存取權控管 (IAM)」。
依序點選「新增」>「新增角色指派」。
選取「Azure Event Hubs Data Receiver」角色,然後按一下「Next」。
這會授予 Pub/Sub 服務帳戶 Azure 事件中樞的讀取權限。
按一下「+ 選取成員」,然後搜尋已註冊的應用程式。
在搜尋欄位中輸入已註冊的應用程式名稱。
按一下應用程式名稱,然後點選「選取」。
按一下「Review + Assign」。
重複步驟 3 至 6,並新增「Azure Event Hubs Data Sender」角色。
這個角色會授予 Google Cloud 服務帳戶權限,從 Azure 事件中樞擷取中繼資料。
如要進一步瞭解如何指派 Azure 角色,請參閱「指派 Azure 角色」頁面。
將 Pub/Sub 發布者角色新增至 Pub/Sub 主體
如要啟用發布功能,您必須將發布者角色指派給 Pub/Sub 服務帳戶,這樣 Pub/Sub 才能發布至 Azure Event Hubs 匯入主題。
為 Pub/Sub 服務帳戶新增 Pub/Sub 服務代理人角色
如要允許 Pub/Sub 使用匯入主題專案的發布配額,Pub/Sub 服務代理需要匯入主題專案的 serviceusage.services.use
權限。
如要提供這項權限,建議您將 Pub/Sub 服務代理人角色新增至 Pub/Sub 服務帳戶。
如果 Pub/Sub 服務帳戶沒有 Pub/Sub 服務代理人角色,可以按照下列步驟授予:
前往 Google Cloud 控制台的「IAM」頁面。
按一下「包含 Google提供的角色授予項目」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
的服務帳戶。按一下這個服務帳戶的「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並點選「Pub/Sub Service Agent role」(Pub/Sub 服務代理角色) (
roles/pubsub.serviceAgent
)。按一下 [儲存]。
允許從所有主題發布內容
如果您尚未建立任何 Azure 事件中樞匯入主題,請使用這個方法。
前往 Google Cloud 控制台的「IAM」頁面。
按一下「包含 Google提供的角色授予項目」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
的服務帳戶。按一下這個服務帳戶的「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並按一下 Pub/Sub 發布者角色 (
roles/pubsub.publisher
)。按一下 [儲存]。
啟用從單一主題發布的功能
只有在 Azure 事件中樞匯入主題已存在時,才使用這個方法。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
執行
gcloud pubsub topics add-iam-policy-binding
指令:gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
更改下列內容:
TOPIC_ID
:Azure 事件中樞匯入主題的主題 ID。PROJECT_NUMBER
:專案編號。如要查看專案編號,請參閱「識別專案」。
前往 Google Cloud 控制台的「IAM」頁面。
針對發出建立或更新主題呼叫的主體,按一下「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並按一下「服務帳戶使用者角色」(
roles/iam.serviceAccountUser
)。按一下 [儲存]。
即使快速連續建立主題和訂閱項目,也可能導致資料遺失。在免付費期間,主題會短暫存在。如果在這段時間內有任何資料傳送至主題,這些資料都會遺失。先建立主題,然後建立訂閱項目,再將主題轉換為匯入主題,即可確保匯入程序不會遺漏任何訊息。
如要重新建立現有匯入主題的 Azure 事件中樞,且名稱相同,您無法直接刪除並重新建立 Azure 事件中樞。這項操作可能會導致 Pub/Sub 的位移管理失效,進而造成資料遺失。如要解決這個問題,請按照下列步驟操作:
- 刪除 Pub/Sub 匯入主題
- 刪除 Azure 事件中樞
- 建立 Azure 事件中樞
- 建立 Pub/Sub 匯入主題
系統一律會從最早的位移讀取 Azure 事件中樞的資料。
前往 Google Cloud 控制台的「主題」頁面。
按一下「建立主題」。
在「主題 ID」欄位中,輸入 Azure 事件中樞匯入主題的 ID。如要進一步瞭解如何為主題命名,請參閱命名規範。
選取「新增預設訂閱項目」。
選取「啟用擷取功能」。
選取「Azure 事件中樞」做為擷取來源。
輸入下列詳細資訊:
- 資源群組:Azure 資源群組的名稱,其中包含您打算擷取至 Pub/Sub 的 Azure Event Hubs 命名空間。
- 事件中樞命名空間:Azure 事件中樞命名空間的名稱,其中包含您打算擷取至 Pub/Sub 的 Azure 事件中樞。
- 事件中樞:您打算擷取至 Pub/Sub 的 Azure 事件中樞名稱。
- 用戶端 ID:在 Azure 中註冊的應用程式 (用戶端) ID,其中包含 Google Cloud 服務帳戶的同盟身分。這個值應為 UUID。詳情請參閱 Azure 應用程式註冊頁面。
- 用戶群 ID:擁有 Azure 事件中樞的用戶群目錄 (用戶群) ID,您打算將該中樞資料擷取至 Pub/Sub。這個值應為 UUID。如要找出租戶 ID,請前往 Azure 取得訂閱和租戶 ID 頁面。
- 訂閱 ID:擁有 Azure 事件中樞資源群組的訂閱項目 ID。這個值應為 UUID。 如要找出訂閱 ID,請前往 Azure 取得訂閱和租戶 ID 頁面。
- 「服務帳戶」:您在「在 Google Cloud中建立服務帳戶」一節中建立的服務帳戶。
其餘欄位則保留預設值。
按一下「建立主題」。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
執行
gcloud pubsub topics create
指令:gcloud pubsub topics create TOPIC_ID \ --azure-event-hubs-ingestion-resource-group RESOURCE_GROUP \ --azure-event-hubs-ingestion-namespace NAMESPACE \ --azure-event-hubs-ingestion-event-hub EVENT_HUB \ --azure-event-hubs-ingestion-client-id CLIENT_ID \ --azure-event-hubs-ingestion-tenant-id TENANT_ID \ --azure-event-hubs-ingestion-subscription-id SUBSCRIPTION_ID \ --azure-event-hubs-ingestion-service-account SERVICE_ACCOUNT
更改下列內容:
TOPIC_ID
:Pub/Sub 主題的名稱或 ID。RESOURCE_GROUP
:Azure 事件中樞資源群組的名稱,其中包含您打算擷取至 Pub/Sub 的 Azure 事件中樞命名空間。NAMESPACE
:Azure 事件中樞命名空間的名稱,其中包含您打算擷取至 Pub/Sub 的 Azure 事件中樞。EVENT_HUB
:您打算擷取至 Pub/Sub 的 Azure 事件中樞名稱。- :Azure 中已註冊的應用程式 (用戶端) ID,其中包含Google Cloud 服務帳戶的聯盟身分。
CLIENT_ID
這個值應為 UUID。詳情請參閱 Azure 應用程式註冊頁面。 TENANT_ID
:擁有 Azure 事件中樞的租戶目錄 (租戶) ID,您打算將該事件中樞資料擷取至 Pub/Sub。這個值應為 UUID。 如要找出租戶 ID,請前往 Azure 取得訂閱和租戶 ID 頁面。SUBSCRIPTION_ID
:擁有 Azure 事件中樞的訂閱項目 ID,您打算將該事件中樞資料擷取到 Pub/Sub。這個值應為 UUID。如要找出訂閱 ID,請前往 Azure 取得訂閱和租戶 ID 頁面。SERVICE_ACCOUNT
:您在「在 Google Cloud中建立服務帳戶」中建立的服務帳戶
前往 Google Cloud 控制台的「主題」頁面。
按一下 Azure 事件中樞匯入主題。
在主題詳細資料頁面中,按一下「編輯」。
更新要變更的欄位。
按一下「更新」。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用下列範例中提及的所有標記,執行
gcloud pubsub topics update
指令:gcloud pubsub topics update TOPIC_ID \ --azure-event-hubs-ingestion-resource-group RESOURCE_GROUP \ --azure-event-hubs-ingestion-namespace NAMESPACE \ --azure-event-hubs-ingestion-event-hub EVENT_HUB \ --azure-event-hubs-ingestion-client-id CLIENT_ID \ --azure-event-hubs-ingestion-tenant-id TENANT_ID \ --azure-event-hubs-ingestion-subscription-id SUBSCRIPTION_ID \ --azure-event-hubs-ingestion-service-account SERVICE_ACCOUNT
更改下列內容:
TOPIC_ID
:Pub/Sub 主題的名稱或 ID。RESOURCE_GROUP
:Azure Event Hubs 資源群組的名稱,其中包含要擷取至 Pub/Sub 的 Azure Event Hubs 命名空間。NAMESPACE
:Azure Event Hubs 命名空間的名稱,其中包含您要擷取至 Pub/Sub 的 Azure 事件中樞。EVENT_HUB
:您要擷取至 Pub/Sub 的 Azure 事件中樞名稱。- :Azure 中已註冊的應用程式 (用戶端) ID,其中包含Google Cloud 服務帳戶的聯盟身分。
CLIENT_ID
這個值應為 UUID。 詳情請參閱 Azure 應用程式註冊頁面。 TENANT_ID
:擁有 Azure 事件中樞的租用戶目錄 (租用戶) ID,您要將該事件中樞資料擷取至 Pub/Sub。這個值應為 UUID。如要找出用戶群 ID,請前往 Azure 取得訂閱和用戶群 ID 頁面。SUBSCRIPTION_ID
:擁有 Azure 事件中樞的訂閱項目 ID,您要將該事件中樞資料擷取至 Pub/Sub。這個值應為 UUID。如要找出訂閱 ID,請參閱「Azure 取得訂閱和租戶 ID」。SERVICE_ACCOUNT
:您在「在 Google Cloud中建立服務帳戶」中建立的服務帳戶
為主題選擇訂閱類型。
瞭解如何將訊息發布至主題。
使用 gcloud CLI、REST API 或用戶端程式庫建立或修改主題。
將服務帳戶使用者角色新增至服務帳戶
服務帳戶使用者角色 (roles/iam.serviceAccountUser
) 包含 iam.serviceAccounts.actAs
權限,可讓主體將服務帳戶附加至 Azure Event Hubs 匯入主題的擷取設定,並將該服務帳戶用於同盟身分。
使用 Azure 事件中樞匯入主題
您可以建立新的匯入主題,或編輯現有主題。
注意事項
建立 Azure 事件中樞匯入主題
如要進一步瞭解與主題相關聯的屬性,請參閱「主題的屬性」。
請確認你已完成下列程序:
如要建立 Azure 事件中樞匯入主題,請按照下列步驟操作:
控制台
gcloud
C++
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 C++ 設定操作說明進行操作。詳情請參閱 Pub/Sub C++ API 參考說明文件。
Go
以下範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 Pub/Sub Go API 參考說明文件。
Java
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考說明文件。
Node.js
在嘗試這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考說明文件。
Node.ts
在嘗試這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考說明文件。
Python
在試用這個範例之前,請先按照快速入門:使用用戶端程式庫中的 Python 設定操作說明來進行。詳情請參閱 Pub/Sub Python API 參考說明文件。
如果發生問題,請參閱「排解 Azure 事件中樞匯入主題的問題」。
編輯 Azure 事件中樞匯入主題
如要編輯 Azure 事件中樞匯入主題的擷取資料來源設定,請按照下列步驟操作:
控制台
gcloud
配額與限制
匯入主題的發布者輸送量會受限於主題的發布配額。詳情請參閱 Pub/Sub 配額與限制。