Azure Data Factory 中的 Azure 函式活動

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

Azure 函式活動可讓您在 Azure Data Factory 或 Synapse 管線中執行 Azure 函式。 若要執行 Azure 函式,您必須建立連結服務連線。 然後,您可以將連結服務與活動搭配使用,該活動可指定您所計畫執行的 Azure 函式。

使用 UI 建立 Azure 函式活動

若要在管線中使用 Azure 函式活動,請完成下列步驟:

  1. 展開 [管線活動] 窗格的 [Azure 函式] 區段,然後將Azure 函式活動拖曳至管線畫布。

  2. 在畫布上選取新的 Azure 函式活動 (如尚未選取) 和其 [設定] 索引標籤以編輯詳細資料。

    Shows the UI for an Azure Function activity.

  3. 如果您尚未定義 Azure 函式連結服務,請選取 [新增] 以建立新的服務。 在新的 [Azure 函式連結服務] 窗格中,選擇您現有的 Azure 函式應用程式 URL,並提供函式金鑰。

    Shows the new Azure Function linked service creation pane.

  4. 選取 Azure 函式連結服務之後,請提供函式名稱和其他詳細資料以完成設定。

Azure 函式連結服務

Azure 函式的傳回型別必須是有效的 JObject。 (請記住,JArray「不是」一個JObject)。除了 JObject 以外的任何傳回型別都會失敗,並引發使用者錯誤「回應內容不是有效的 JObject」

函式金鑰為每個函式提供個別的唯一金鑰或函式應用程式中的主要金鑰,可讓您安全地存取函式名稱。 受控識別可讓您安全地存取整個函式應用程式。 使用者必須提供金鑰才能存取函式名稱。 如需函式存取金鑰的詳細資訊,請參閱函式文件

屬性 說明 必要
類型 型別屬性必須設為:AzureFunction Yes
函式應用程式 URL Azure 函式應用程式的 URL。 格式為 https://<accountname>.azurewebsites.net。 此 URL 是您在 Azure 入口網站中檢視函式應用程式時位於 [URL] 區段底下的值 Yes
函式金鑰 Azure 函式的存取金鑰。 按一下個別函式的 [管理] 區段,然後複製 [函式金鑰] 或 [主機金鑰]。 在此深入了解:Azure Functions HTTP 觸發程序和繫結 Yes
驗證 用於呼叫 Azure 函式的驗證方法。 支援的值是「系統指派的受控識別」或「匿名」。 Yes
資源識別碼 Azure 函式的應用程式 (用戶端) 識別碼。 切換至個別函式的 [驗證] 區段,然後在 [識別提供者] 底下取得應用程式 (用戶端) 識別碼。 當您使用系統指派的受控識別時,將會顯示此屬性。 如需詳細資訊,請參閱操作說明:將 App Service 或 Azure Functions 應用程式設定為使用 Microsoft Entra 登入 (部分機器翻譯)。 No

注意

當您使用匿名驗證時,請確定您已在 Azure 函式端關閉身分識別。

Azure 函式活動

屬性 說明 允許的值 必要
名稱 管線中的活動名稱 String Yes
類型 活動類型是 ‘AzureFunctionActivity’ String Yes
連結服務 相對應 Azure 函式應用程式的 Azure 函式連結服務 連結服務參考 Yes
函式名稱 此活動會在 Azure 函式應用程式中呼叫的函式名稱 String Yes
方法 函式呼叫的 REST API 方法 字串支援的類型:"GET"、"POST"、"PUT" Yes
頁首 傳送至要求的標頭。 例如,用來在要求上設定語言和類型:"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } 字串 (或含有字串之 resultType 的運算式) No
本文​​ 與要求一起傳送至函式 API 方法的主體 字串 (或含有字串之 resultType 的運算式) 或物件。 PUT/POST 方法的必要項

請在要求乘載結構描述一節中查看要求乘載的結構描述。

路由和查詢

Azure 函式活動支援路由。 例如,若您的 Azure 函式具有端點 https://functionAPP.azurewebsites.net/api/<functionName>/<value>?code=<secret>,則 Azure 函式活動中使用的 functionName<functionName>/<value>。 您可以將此函式參數化,以在執行階段提供所需的 functionName

注意

Durable Functions 的 functionName 應取自於其 JSON 定義中函式繫結的 route 屬性,以包含其路由資訊。 僅使用未包含路由詳細資料的 functionName 會因為找不到函式應用程式而導致失敗。

Azure 函式活動也支援查詢。 查詢必須包含在 functionName 的一部分中。 例如,當函式名稱為 HttpTriggerCSharp 且您想要包含的查詢為 name=hello 時,您可以將 Azure 函式活動中的 functionName 建構為 HttpTriggerCSharp?name=hello。 此函式可以參數化,以便在執行階段決定使用的值。

逾時和長時間執行的函式

不論您在設定中進行的 functionTimeout 設定為何,Azure Functions 都會在 230 秒後逾時。 如需詳細資訊,請參閱這篇文章。 若針對此行為採取因應措施,請遵循非同步模式或使用 Durable Functions。 Durable Functions 的優點為其會提供其本身的狀態追蹤機制,因此您無須實作自己的狀態追蹤。

本文中深入了解 Durable Functions。 您可以設定 Azure 函式活動來呼叫 Durable Function,其會傳回具有不同 URI 的回應,例如此範例。 因為 statusQueryGetUri 會在函式執行時傳回 HTTP 狀態 202,所以您可以使用 Web 活動來輪詢函式狀態。 將 Web 活動的 url 欄位設為 @activity('<AzureFunctionActivityName>').output.statusQueryGetUri。 當 Durable Function 完成時,函式的輸出將會是 Web 活動的輸出。

範例

您可以在這裡找到使用 Azure 函式來擷取 tar 檔案內容的範例。

深入了解管線和活動中支援的活動。