從儲存體中的事件方格事件執行批次端點
適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)
事件方格是完全受控的服務,您可用來輕鬆管理許多不同的 Azure 服務和應用程式的事件。 此服務可簡化事件驅動和無伺服器應用程式的建置方式。 本教學課程說明一旦在儲存體帳戶中建立檔案,如何觸發批次端點的作業來處理檔案。 此結構使用邏輯應用程式工作流程來訂閱這些事件並觸發端點。
下圖顯示這個解決方案的結構:
下列步驟說明此解決方案中的高階步驟:
在特定儲存體帳戶中建立新的 Blob 時,就會觸發建立檔案事件。
事件會傳送至事件方格,處理到所有訂閱者。
邏輯應用程式工作流程會訂閱並接聽這些事件。
由於儲存體帳戶可以包含多個資料資產,因此事件篩選只會套用至該儲存體帳戶的特定資料夾中發生的事件。 可以視需要進一步篩選 (例如,根據副檔名)。
即會觸發邏輯應用程式工作流程,並執行下列動作:
取得授權權杖,以叫用使用服務主體認證的批次端點。
使用新建立的檔案做為輸入,觸發批次端點 (預設部署)。
批次端點會傳回為了處理檔案而建立的作業名稱。
重要
當您使用與事件方格連線的邏輯應用程式工作流程來叫用批次端點時,會為在儲存體帳戶中建立的每個 Blob 檔案產生一個作業。 請記住,批次端點會在檔案層級散發工作,因此不會發生任何平行處理。 您可改用批次端點的功能,在同一個計算叢集上執行多個作業。 如果您需要以自動方式在整個資料夾上執行作業,建議您切換至從 Azure Data Factory 叫用批次端點。
必要條件
您已將模型正確部署為批次端點。 您可以擴充此結構,視需要使用管線元件部署。
您的批次部署會在名稱為
batch-cluster
的計算叢集中執行。您建立的邏輯應用程式會使用 REST 與 Azure Machine Learning 批次端點通訊。
若要深入了解如何使用批次端點的 REST API,請參閱建立批次端點的作業和輸入資料。
針對批次端點執行驗證
Azure Logic Apps 可以使用 HTTP 動作叫用批次端點的 REST API。 批次端點支援 Microsoft Entra ID 的授權作業,因此對 API 提出的要求需經過適當的驗證處理。
本教學課程在此案例中使用服務主體進行驗證,以及與批次端點互動。
遵循使用 Microsoft Entra ID 註冊應用程式及建立服務主體的指示,建立服務主體。
遵循選項 3:建立新的用戶端密碼中的指示,建立用於驗證的祕密。
請務必儲存產生的用戶端密碼值,此值只會顯示一次。
請務必儲存應用程式 [概觀] 窗格中的
client ID
和tenant id
。遵循授與存取權中的指示,授與工作區的服務主體存取權。 在此範例中,服務主體需要下列權限:
- 讀取批次部署並對其執行動作的工作區權限。
- 資料存放區的讀取/寫入權限。
啟用資料存取
為了指出您要傳送至部署作業的輸入資料,本教學課程使用事件方格所提供的雲端 URI。 批次端點會使用計算的身分識別來裝載資料,同時保留作業的身分識別,以讀取裝載資料。 因此,您必須將使用者指派的受控識別指派給計算叢集,並確定該叢集具有裝載基礎資料的存取權。 若要確保資料存取,請遵循下列步驟:
建立受控識別資源:
更新計算叢集以使用我們建立的受控識別:
注意
此範例假設您已建立名稱為
cpu-cluster
的計算叢集,且用於端點中的預設部署。在 Azure 入口網站中,確定受控識別具有讀取資料的正確權限。
若要存取儲存體服務,您必須至少具有對於儲存體帳戶的儲存體 Blob 資料讀取者存取權。 只有儲存體帳戶擁有者可以透過 Azure 入口網站變更您的存取層級。
建立邏輯應用程式
在 Azure 入口網站的 Azure 首頁上,選取 [建立資源]。
在 Azure Marketplace 功能表上,選取 [整合]>[邏輯應用程式]。
在 [建立邏輯應用程式] 窗格的 [基本資訊] 索引標籤上,提供下列有關邏輯應用程式資源的資訊。
屬性 必填 值 Description 訂用帳戶 Yes <Azure-訂閱-名稱> 您的 Azure 訂用帳戶名稱。 此範例使用隨用隨付。 資源群組 Yes LA-TravelTime-RG 您在其中建立邏輯應用程式資源和相關資源的 Azure 資源群組。 此名稱在各區域中必須是唯一的,而且只能包含字母、數字、連字號 ( -
)、底線 (_
)、括弧 ((
和)
) 和句點 (.
)。名稱 Yes LA-TravelTime 您的邏輯應用程式資源名稱在各區域中必須是唯一的,而且只能包含字母、數字、連字號 ( -
)、底線 (_
)、括弧 ((
和)
) 和句點 (.
)。繼續進行選取之前,請移至 [方案] 區段。 針對 [方案類型],選取 [取用],如此只會顯示在多租用戶 Azure Logic Apps 中執行的取用邏輯應用程式工作流程設定。
重要
針對已啟用私人連結的工作區,您必須使用 Azure Logic Apps 的標準方案並且允許私人網路設定。
[方案類型] 屬性也會指定要使用的計費模型。
方案類型 描述 標準 此邏輯應用程式類型是預設選取項目,會在單一租用戶的 Azure Logic Apps 中執行,並使用標準定價模型。 耗用 此邏輯應用程式類型會在全域、多租用戶的 Azure Logic Apps 中執行,並使用取用定價模型。 現在繼續下列選取作業:
屬性 必填 值 Description 區域 Yes 美國西部 用來儲存應用程式資訊的 Azure 資料中心區域。 此範例會在 Azure 中將範例邏輯應用程式部署至美國西部區域。 啟用記錄分析 是 否 只有在您選取 [取用] 邏輯應用程式類型時,才會顯示此選項並套用。 只有在您想要啟用診斷記錄時,才會變更此選項。 在本教學課程中,請保留預設的選取項目。 當您完成時,選取 [檢閱 + 建立]。 在 Azure 驗證邏輯應用程式資源的相關資訊之後,請選取 [建立]。
在 Azure 部署您的應用程式之後,請選取 [移至資源]。
Azure 會為您的邏輯應用程式開啟工作流程設計工具。
設定工作流程參數
此邏輯應用程式工作流程會使用參數來儲存您執行批次部署所需的特定資訊片段。
在工作流程設計工具的工具列上,選取 [參數]。
在 [參數] 窗格中,選取 [建立參數],並針對每個要建立的參數提供下列相關資訊:
提示
使用針對批次端點進行驗證時所設定的值。
參數名稱 描述 範例值 tenant_id
端點部署之處的租用戶識別碼。 00000000-0000-0000-00000000
client_id
用來叫用端點的服務主體用戶端識別碼。 00000000-0000-0000-00000000
client_secret
叫用端點所用的服務主體用戶端密碼。 ABCDEFGhijkLMNOPQRstUVwz
endpoint_uri
端點評分 URI。
重要:此 URI 適用於您要執行的端點。 端點必須已設定預設部署。https://<endpoint_name>.<region>.inference.ml.azure.com/jobs
下列範例顯示範例參數:
如需相關資訊,請參閱在 Azure Logic Apps 中建立工作流程輸入的跨環境參數。
加入觸發程序
我們想要每次在儲存體帳戶的特定資料夾 (資料資產) 中建立新檔案時,即觸發邏輯應用程式工作流程。 邏輯應用程式會使用事件的資訊來叫用批次端點,並傳遞要處理的特定檔案。
在工作流程設計工具上,遵循這些一般步驟以新增名為發生資源事件時的事件方格觸發程序。
在 [連線資訊] 方塊中,選取要使用的驗證類型,然後選取 [登入]。
在觸發程序方塊中,提供下列資訊:
屬性 數值 Description 資源類型 Microsoft.Storage.StorageAccounts
發出事件的資源類型。 訂用帳戶 您的訂用帳戶名稱 儲存體帳戶的訂用帳戶。 資源名稱 您的儲存體帳戶名稱 產生檔案的儲存體帳戶名稱。 事件類型項目 Microsoft.Storage.BlobCreated
事件類型。 從 [進階參數] 清單中選取 [前置詞篩選],並提供下列值:
/blobServices/default/containers/<container-name>/blobs/<path-to-data-folder>
重要
前置詞篩選屬性允許事件方格只在我們指示的特定路徑中建立 Blob 時通知工作流程。 在此情況下,我們會假設檔案是一些外部流程在容器 <容器名稱> 內 <資料夾路徑> 指定的資料夾中建立,該容器位於選取的儲存體帳戶中。 設定此參數以符合資料的位置。 否則,在該儲存體帳戶的任何位置建立任何檔案都會引發此事件。 如需詳細資訊,請參閱事件方格的事件篩選。
下列範例顯示觸發程序的顯示方式:
設定動作
在 [發生資源事件時] 觸發程序下方,遵循這些一般步驟來新增 HTTP 動作。 將動作重新命名為授權。
在 [授權] 動作中,提供下列資訊:
屬性 值 備註 方法 POST
HTTP 方法 URI concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token')
若要輸入此運算式,請在 [URI] 方塊內選取。 從出現的選項中,選取運算式編輯器 (公式圖示)。 標題 Content-Type
值為application/x-www-form-urlencoded
本文 concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com')
若要輸入此運算式,請在 [主體] 方塊內選取。 從出現的選項中,選取運算式編輯器 (公式圖示)。 下列範例顯示範例授權動作:
在 [授權] 動作下方,新增另一個 [HTTP] 動作,並將標題重新命名為 [叫用]。
在 [叫用] 動作中,提供下列資訊:
屬性 值 備註 方法 POST
HTTP 方法 URI endpoint_uri
在 [URI] 方塊內選取,然後在 [參數] 下方選取 endpoint_uri。 標題 Content-Type
值為application/json
標題 Authorization
值為concat('Bearer ', body('Authorize')['access_token'])
若要輸入此運算式,請在 [標頭] 方塊內選取。 從出現的選項中,選取運算式編輯器 (公式圖示)。 在 [主體] 方塊內選取,然後從出現的選項中選取運算式編輯器 (公式圖示) 以輸入下列運算式:
replace('{ "properties": { "InputData": { "mnistinput": { "JobInputType" : "UriFile", "Uri" : "<JOB_INPUT_URI>" } } } }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
提示
先前的承載會對應至模型部署。 如果您使用管線元件部署,請根據管線輸入的預期調整格式。 如需如何在 REST 呼叫中建立輸入結構的相關資訊,請參閱建立批次端點的作業和輸入資料 (REST)。
下列範例顯示範例叫用動作:
注意
叫用動作會觸發批次作業,但此動作不會等待作業完成。 根據預設,Azure Logic Apps 不會針對長時間執行的應用程式進行設定。 如果您需要等候作業完成,建議您切換至從 Azure Data Factory 執行批次端點。
完成後,請儲存您的工作流程。
邏輯應用程式工作流程已準備好執行,而且每次在指定的路徑下建立新檔案時,都會自動觸發它。
若要確認應用程式已成功收到事件,請檢查應用程式的執行歷程記錄: