適用於:Azure Logic Apps (標準)
本指南說明如何在您搭配 Azure Logic Apps (標準) 延伸模組使用 Visual Studio Code 時,在本機建立您可以在單一租用戶 Azure Logic Apps 中執行的範例標準邏輯應用程式工作流程。
在本指南中,您會建立標準邏輯應用程式工作區和專案、建置您的工作流程,並將您的專案部署為 Azure 中的標準邏輯應用程式資源,其中您的工作流程可以在單一租用戶 Azure Logic Apps 或 App Service 環境 v3 中執行 (僅限 Windows 型 App Service 方案)。 由於 Azure Logic Apps (標準) 的容器化執行階段,您也可以在 Kubernetes 可以執行的任何位置部署和執行工作流程,例如 Azure、Azure Kubernetes Service、內部部署,甚至是其他雲端提供者。
以下是標準邏輯應用程式提供的一些優點:
您可以在本機 Visual Studio Code 開發環境中在本機建立、偵錯、執行及測試工作流程。 Azure 入口網站和 Visual Studio Code 都提供建置、執行及部署標準邏輯應用程式資源和工作流程的功能。 不過,使用 Visual Studio Code 時,您可以在本機執行這些工作。
您的標準邏輯應用程式專案可以同時包含具狀態和無狀態工作流程。
相同標準邏輯應用程式資源和租用戶中的工作流程會在與 Azure Logic Apps (標準) 執行階段相同的處理程序中執行,因此它們會共用相同的資源,並提供更佳的效能。
本指南的範例工作流程一開始會以要求觸發程序開始,後面接著 Office 365 Outlook 動作。 要求觸發程序會建立工作流程的可呼叫端點,並等候來自任何呼叫者的輸入 HTTPS 要求。 當觸發程序收到要求並引發時,下一個動作便會執行,方法是傳送電子郵件給指定的收件者,以及您選取的任何觸發程序輸出。 稍後,您可以新增回應動作,以傳回回覆並將處理的資料傳回給呼叫者。
雖然本指南的範例是以雲端為基礎,而且只有幾個步驟,但您可以使用來自 1,400 個以上連接器的作業來建立工作流程,以協助您跨雲端、內部部署和混合式環境整合各種不同的服務、系統、應用程式和資料。
當您完成本指南時,您會完成下列高階工作:
- 建立具有空白具狀態工作流程的標準邏輯應用程式工作區和專案。
- 將觸發程序和動作新增至您的工作流程。
- 在本機執行、偵錯及測試。
- 檢閱工作流程執行歷程記錄。
- 尋找防火牆存取的網域名稱詳細資料。
- 啟用無狀態工作流程的執行歷程記錄。
- 部署至 Azure,其包括選擇性地啟用 Application Insights。
- 在部署後啟用或開啟 Application Insights。
- 在 Visual Studio Code 和 Azure 入口網站中管理已部署的邏輯應用程式資源。
先決條件
存取和連線需求
如果您打算只使用內建作業在本機建立和執行工作流程,而其會在 Azure Logic Apps (標準) 執行階段原生執行,則本節中不需要存取和連線需求。 不過,針對下列案例,您需要符合下列需求:
- 從 Visual Studio Code 將邏輯應用程式部署至 Azure。
- 建置工作流程,以使用全域 Azure 中執行的受控連接器作業。
- 存取 Azure 或其他已部署 Azure 資源中的現有標準邏輯應用程式資源和工作流程。
這些需求包括下列項目:
Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶。
存取網際網路,讓您可以下載所需的延伸模組、從 Visual Studio Code 連線到您的 Azure 帳戶、測試包含受控連接器作業的工作流程,以及從 Visual Studio Code 部署至 Azure。
若要在本指南中建立相同的工作流程範例,您需要可使用 Microsoft 公司或學校帳戶登入的 Office 365 Outlook 電子郵件帳戶。
如果您沒有 Office 365 帳戶,您可使用任何其他可用的動作,從電子郵件帳戶 (例如 Outlook.com) 傳送訊息。 如果您選擇不同的電子郵件連接器,例如 Outlook.com,您仍可遵循此範例,且一般整體步驟相同。 不過,您的體驗和選項在某些方面可能會有所不同。 例如,使用 Outlook.com 連接器,使用您的個人 Microsoft 帳戶登入。
工具
免費下載並安裝免費的 Visual Studio Code。
遵循下列步驟,下載並安裝適用於 Visual Studio Code 的 Azure Logic Apps (標準) 延伸模組:
在 Visual Studio Code 中,於 [活動] 列上,選取 [延伸模組]。 (鍵盤:按 Ctrl+Shift+X)
在 [延伸模組] 搜尋方塊中,輸入 Azure Logic Apps 標準。 從結果清單中,選取 [Azure Logic Apps (標準)]> [安裝]。
延伸模組會下載並安裝下列架構所需的所有相依性和正確的版本:
- Azure Functions Core Tools (Azure 函式核心工具)
- .NET SDK
- Node.js
安裝完成之後,延伸模組會出現在 [延伸模組: 已安裝] 清單中。
重新載入或重新啟動 Visual Studio Code,以確定延伸模組和所有相依性都已正確安裝。
若要確認延伸模組和所有相依性都已正確安裝,請參閱檢查延伸模組安裝。
目前,您可以同時安裝使用量 (多租用戶) 和標準 (單一租用戶) 延伸模組。 開發體驗在某些方面彼此不同,但您的 Azure 訂用帳戶可以同時包含標準和使用量邏輯應用程式資源類型。 在 Visual Studio Code 中,Azure 窗格會顯示 Azure 訂用帳戶中所有 Azure 已部署和裝載的邏輯應用程式,但會以下列方式組織您的應用程式:
- 資源區段:訂用帳戶中的所有標準邏輯應用程式。
- Logic Apps (使用量) 區段:訂用帳戶中的所有使用量邏輯應用程式。
若要在本機執行 Webhook 型的觸發程序和動作,例如內建的 HTTP Webhook 觸發程序,您必須在 Visual Studio Code 中設定回撥 URL 的轉送。
若要為標準邏輯應用程式啟用 Application Insights 的診斷記錄和追蹤,您可以在邏輯應用程式部署期間或部署之後完成這項工作。 您需要有 Application Insights 資源,但您可以在部署期間或部署後事先建立此資源。
安裝或使用可傳送 HTTP 要求以測試範例工作流程的工具,例如:
- Visual Studio Code 搭配來自 Visual Studio Marketplace 的 擴充功能
- PowerShell Invoke-RestMethod
- Microsoft Edge - 網路控制台工具
- 布魯諾
- 捲曲
謹慎
針對您有敏感數據的案例,例如認證、秘密、存取令牌、API 密鑰和其他類似資訊,請務必使用一個工具,以必要的安全性功能保護您的數據。 此工具應該離線或本機運作,且不需要登入線上帳戶或將數據同步處理至雲端。 當您使用具有這些特性的工具時,可以降低公開敏感數據給公眾的風險。
檢查延伸模組安裝
若要確定已正確安裝延伸模組和所有相依性,請重新載入或重新啟動 Visual Studio Code。
確認 Visual Studio Code 會自動尋找並安裝延伸模組更新,讓所有延伸模組都能取得最新的更新。 否則,您必須手動解除安裝過期的版本,並安裝最新版本。
在 [檔案] 功能表上,移至 [喜好設定]> [設定]。
在 [使用者] 索引標籤上,移至 [功能]> [延伸模組]。
請確定已選取 [自動檢查更新],並將 [自動更新] 設定為 [所有延伸模組]。
確認 [Azure Logic Apps 標準:專案執行階段] 設定已設定為正確的版本:
在 [使用者] 索引標籤上,移至 > [延伸模組]> [Azure Logic Apps (標準)]。
請確定 [專案執行階段] 設定為 ~4 版,例如:
備註
需要此版本才能使用內嵌程式碼作業動作。
連線至您的 Azure 帳戶
如果您尚未連線到 Azure 帳戶,請遵循下列步驟來連線:
在 Visual Studio Code 的 [活動列] 上,選取 Azure 圖示以開啟 Azure 窗格。
在 Azure 窗格中的 [資源] 底下,選取 [登入 Azure]。 當 [Visual Studio Code 驗證] 頁面出現時,請使用您的 Azure 帳戶登入。
登入之後,Azure 窗格會顯示與您的 Azure 帳戶相關聯的 Azure 訂用帳戶。 如果預期的訂用帳戶未出現,或您希望窗格只顯示特定訂用帳戶,請遵循下列步驟:
在訂用帳戶清單中,將指標移至第一個訂用帳戶旁,直到 [選取訂用帳戶] 按鈕 (篩選圖示) 出現為止。 選取篩選圖示。
或者,在 Visual Studio Code 狀態列中,選取您的 Azure 帳戶。
當更新的訂用帳戶清單出現時,請選取您想要的訂用帳戶,並確定您選取 [確定]。
建立本機工作區
邏輯應用程式專案一律需要工作區。 因此,您必須先建立邏輯應用程式專案所在的工作區,才能建立邏輯應用程式。 您稍後會使用此工作區和專案,以從 Visual Studio Code 管理、執行及部署邏輯應用程式至部署環境。 基礎專案類似於 Azure Functions 專案,也稱為函數應用程式專案。
在您的電腦上,建立空白的本機資料夾,以供稍後用於工作區和專案。
此範例會建立名為 fabrikam-workflows 的資料夾。
在 Visual Studio Code 中,關閉所有開啟的資料夾。
在 Azure 視窗中, 從 [Azure Logic Apps] 選單的 [工作區] 區段工具列上,選取 [建立新的邏輯應用程式工作區]。
如果 Windows Defender 防火牆提示您針對 Code.exe 授與網路存取權,也就是 Visual Studio Code,而針對 func.exe,也就是 Azure Functions Core Tools,請選取 [私人網路,例如家用或工作場所網路]>[允許存取]。
在 [選取資料夾] 視窗中,移至您建立資料夾的位置、選取資料夾,然後選擇 [選取] (請勿按兩下選取資料夾)。
在 Visual Studio Code 工具列上,會出現提示,讓您為工作區命名。
針對 [提供工作區名稱],輸入要使用的工作區名稱。
此範例會使用 Fabrikam-Workflows。
接下來,建立邏輯應用程式專案。
建立邏輯應用程式專案
建立必要的工作區之後,請遵循提示來建立您的專案。
針對您的專案範本,選取 [邏輯應用程式]。 輸入要使用的專案名稱。
此範例會使用 Fabrikam-Workflows。
針對您的工作流程範本,根據您的案例選取 [具狀態工作流程] 或 [無狀態工作流程]。 輸入要使用的工作流程名稱。
此範例會選取可儲存工作流程歷程記錄、輸入和輸出的具狀態工作流程,並使用 Stateful-Workflow 作為名稱。
無狀態工作流程不會儲存此資料,且目前僅支援受控連接器動作,不支援觸發程序。 雖然您可以選擇在 Azure 中為無狀態工作流程啟用連接器,但設計工具不會顯示任何受控連接器觸發程序供您選取。
備註
如果您收到名為 azureLogicAppsStandard.createNewProject 的錯誤訊息,則無法寫入工作區設定,因為 azureFunctions.suppressProject 不是已註冊的組態,請嘗試直接從 Visual Studio Marketplace 或 Visual Studio Code 內部重新安裝 Visual Studio Code 的 Azure Functions 延伸模組。
現在,選擇您要在目前 Visual Studio Code 視窗或新視窗中開啟專案。 根據您的喜好設定,選取 [在目前視窗中開啟] 或 [在新視窗中開啟]。
[總管] 窗格隨即開啟,以顯示您的工作區、專案,以及自動開啟的 workflow.json 檔案。 此檔案存在於名為 Stateful-Workflow 的資料夾,並儲存您在設計工具中所建置工作流程的基礎 JSON 定義。 如需專案結構的相關資訊,請參閱標準邏輯應用程序專案結構。
您也會收到提示以啟用多租用戶 Azure 裝載的「共用」連接器,例如:
若要啟用在多租用戶 Azure 中執行的所有受控「共用」連接器,以便檢視並選擇在工作流程中使用它們,請選取 [從 Azure 使用連接器]。
備註
如果您未選取此選項,且稍後嘗試在建置工作流程時新增受控連接器作業,則您無法繼續,因為作業資訊窗格會顯示不會停止的旋轉圓形。
針對 Azure 資源群組,選取 [建立新的資源群組]。 輸入要使用的資源群組名稱。
此範例會使用 Fabrikam-Workflows-RG。
針對訂用帳戶,選取要與您的邏輯應用程式專案搭配使用的 Azure 訂用帳戶。
針對要建立群組和資源的位置,選取 Azure 區域。
此範例使用 [美國中西部]。
如果您的專案需要開發的其他設定,或需要支援成品來建置您的工作流程,請參閱下列案例和相關工作:
狀況 任務 在本機執行 Webhook 型的觸發程序或動作。 設定 Webhook 回撥 URL 的轉送。 設定無狀態工作流程執行歷程記錄。 啟用無狀態工作流程的執行歷程記錄。 新增成品和相依性,例如地圖、結構描述和組件。 新增成品和相依性。 使用 NuGet 型 (.NET) 專案 將延伸模組型套件組合 (Node.js) 專案轉換為 NuGet 套件型 (.NET) 專案。
注意:若要轉換您在組件支援存在之前建立的延伸模組套件組合型 (Node.js) 專案,另請參閱移轉 NuGet 套件型專案以使用 lib 資料夾中的組件。建立您自己的內建連接器。 1.將延伸模組套件組合型 (Node.js) 專案轉換為 NuGet 套件型 (.NET) 專案 。
2.啟用內建連接器製作。
現在,開啟工作流程設計工具。
開啟工作流程設計工具
在 [總管] 窗格中開啟專案之後,請開啟設計工具,以便建置工作流程。
從 workflow.json 檔案捷徑功能表中,選取 [開啟設計工具]。
備註
選取此選項之後,您可能會收到訊息,指出啟動可能需要幾秒鐘的時間,因為「啟動工作流程設計階段 API」。 您可以忽略此訊息,或選取 [確定]。
Visual Studio Code 會開啟工作流程設計工具,並顯示 [新增觸發程序] 提示,例如:
備註
如果設計工具未開啟,請參閱疑難排解一節,設計工具無法開啟。
接下來,新增觸發程序和動作來建立您的工作流程。
新增觸發程序和動作
若要建立工作流程,請使用觸發程序啟動您的工作流程,然後一開始新增單一動作。 如此一來,您就可以先測試工作流程,再新增下一個動作。 範例工作流程會使用下列觸發程序和動作,統稱為作業:
連接器或作業群組 | 作業名稱 | 作業類型 | 說明 |
---|---|---|---|
要求 | 收到 HTTP 要求時 | 觸發程序 (內建) | 在工作流程上建立端點 URL,以接收來自其他服務或邏輯應用程式工作流程的輸入呼叫或要求。 如需詳細資訊,請參閱接收和回應工作流程的輸入 HTTP 呼叫。 |
Office 365 Outlook | 傳送電子郵件 | 動作 (受控) | 使用 Office 365 Outlook 帳戶傳送電子郵件。 若要遵循本指南中的步驟,您需要 Office 365 Outlook 電子郵件帳戶。 如需詳細資訊,請參閱從 Azure Logic Apps 連線到 Office 365 Outlook。 注意:如果您有不同連接器所支援的電子郵件帳戶,您可以使用該連接器,但該連接器的使用者體驗與此範例中的步驟不同。 |
要求 | 回應 | 動作 (內建) | 傳送回覆並將資料傳回給呼叫者。 如需詳細資訊,請參閱新增回應動作。 |
新增「要求」觸發程序
在工作流程設計工具上,如果尚未選取,請選取 [新增觸發程序]。
[新增觸發程序] 窗格隨即開啟,並顯示您可以從可用的連接器和作業群組中選取的資源庫,例如:
在 [新增觸發程序] 窗格中,遵循下列一般步驟,新增名為 [收到 HTTP 要求時] 的要求觸發程序。
下列範例會選取 [ 內建 ] 選項,只顯示內建觸發程式:
當觸發程序出現在設計工具上時,觸發程序資訊窗格隨即開啟,並顯示觸發程序的參數、設定和其他相關工作。
備註
如果觸發程序資訊窗格未出現,請確定已選取設計工具上的觸發程序。
儲存您的工作流程。 在設計工具的工具列上,選取 [儲存]。
新增 Office 365 Outlook 動作
在設計工具的 [要求] 觸發程序下,遵循下列一般步驟,新增 名為傳送電子郵件 (V2) 的 Office 365 Outlook 動作。
如果動作未出現在初始結果中,請在連接器名稱旁選取 [查看更多],例如:
當動作的驗證窗格出現時,請選取 [登入] 以建立電子郵件帳戶的連線。
請遵循後續的提示來驗證您的認證、允許存取,以及允許傳回至 Visual Studio Code。
備註
如果在完成提示之前經過太多時間,驗證程序就會逾時並失敗。 在此情況下,請回到設計工具,然後重試登入以建立連線。
當 Microsoft 驗證提示出現時,請選取 Office 365 Outlook 的使用者帳戶。 在開啟的確認必要頁面上,選取 [允許存取]。
當 Azure Logic Apps 提示開啟 Visual Studio Code 連結時,請選取 [開啟]。
當 Visual Studio Code 提示您讓延伸模組開啟 Microsoft Azure 工具時,請選取 [開啟]。
在 Visual Studio Code 建立連線之後,某些連接器會顯示訊息:連線僅在 <n> 天內有效。 此時間限制僅適用於您在 Visual Studio Code 中撰寫您的邏輯應用程式工作流程時的持續時間。 部署之後,此限制即不再適用,因為您的工作流程可以使用其自動啟用的系統指派受控識別,在執行階段進行驗證。 此受控識別與您建立連線時所使用的驗證認證或連接字串不同。 如果您停用此系統指派的受控識別,連線將無法在執行階段運作。
在開啟的 [傳送電子郵件] 資訊窗格中,於 [參數] 索引標籤上提供動作的必要資訊。
備註
如果動作資訊窗格未自動開啟,請選取設計工具上的 [傳送電子郵件] 動作。
財產 為必填項目 價值 說明 至 是的 < 您的電子郵件地址> 電子郵件收件者,這可能是您的電子郵件地址,以供測試之用。 此範例使用虛構的電子郵件 sophia.owen@fabrikam.com。 主旨 是的 來自工作流程範例的電子郵件 電子郵件主旨 本文 是的 來自您工作流程範例的問候! 電子郵件本文內容 例如:
儲存您的工作流程。 在設計工具上,選取 [儲存]。
標準邏輯應用程式專案結構
在 Visual Studio Code 中,邏輯應用程式專案具有下列其中一種類型:
- 延伸模組套件組合型 (Node.js) 為預設類型
- NuGet 套件型 (.NET) 則能從預設類型轉換
根據這些類型,您的專案可能包含稍微不同的資料夾或檔案。 例如,Nuget 套件型專案具有包含套件和其他程式庫檔案的 .bin 資料夾。 延伸模組套件組合型專案不包含此 .bin 資料夾。
某些案例需要 NuGet 套件型專案,您的應用程式才能執行,例如,當您想要開發和執行自訂內建作業時。 如需將專案轉換為使用 NuGet 的詳細資訊,請參閱啟用內建連接器製作。
預設延伸模組套件組合型專案具有資料夾和檔案結構,類似於下列範例:
MyWorkspaceName
| MyBundleBasedLogicAppProjectName
|| .vscode
|| Artifacts
||| Maps
|||| MapName1
|||| ...
||| Rules
||| Schemas
|||| SchemaName1
|||| ...
|| lib
||| builtinOperationSdks
|||| JAR
|||| net472
||| custom
|| WorkflowName1
||| workflow.json
||| ...
|| WorkflowName2
||| workflow.json
||| ...
|| workflow-designtime
||| host.json
||| local.settings.json
|| .funcignore
|| connections.json
|| host.json
|| local.settings.json
在專案的根層級,您可以找到下列資料夾和檔案以及其他項目:
名稱 | 資料夾或檔案 | 說明 |
---|---|---|
.vscode | 資料夾 | 包含與 Visual Studio Code 相關的設定檔案,例如 extensions.json、launch.json、settings.json 和 tasks.json 檔案。 |
文物 | 資料夾 | 包含您在支援企業對企業 (B2B) 案例的工作流程中,所定義和使用的整合帳戶成品。 例如,範例結構包含下列資料夾: - 對應:包含用於 XML 轉換作業的對應。 - 結構描述:包含用於 XML 驗證作業的結構描述。 - 規則:以規則為基礎的引擎專案中的商務規則的成品。 |
自由 | 資料夾 | 包含邏輯應用程式可以使用或參考的支援組件。 您可以在 Visual Studio Code 中將這些組件上傳至專案,但您必須將它們新增至專案中的特定資料夾。 例如,此資料夾包含下列資料夾: - builtinOperationSdks:分別包含 JAVA 和 .NET Framework 組件的 JAR 和 net472 資料夾。 - custom:包含 .NET Framework 自訂組件。 如需支援組件類型及其在專案中放置位置的詳細資訊,請參閱將組件新增至您的專案。 |
< WorkflowName> | 資料夾 | 針對每個工作流程,<WorkflowName> 資料夾包含 workflow.json 檔案,其中包含該工作流程的基礎 JSON 定義。 |
workflow-designtime | 資料夾 | 包含與開發環境相關的設定檔案。 |
.funcignore | 檔案 | 包含與已安裝 Azure Functions Core Tools 相關的資訊。 |
connections.json | 檔案 | 包含工作流程所使用的任何受控連線和 Azure 函式的中繼資料、端點和金鑰。 重要事項:若要在每個環境中使用不同的連線和函數,請確定您將 connections.json 檔案參數化,並更新端點。 |
host.json | 檔案 | 包含執行階段特定的組態設定和值,例如,單一租用戶 Azure Logic Apps 平台、邏輯應用程式、工作流程、觸發程序和動作的預設限制。 在邏輯應用程式專案的根層級上,host.json 中繼資料檔案會包含相同邏輯應用程式中所有工作流程在本機或 Azure 中執行時所使用的組態設定和預設值。 如需參考資訊,請參閱編輯應用程式設定和主機設定。 注意:當您建立邏輯應用程式時,Visual Studio Code 會在您的儲存體容器中建立備份 host.snapshot.*.json 檔案。 當您刪除邏輯應用程式時,並不會刪除此備份檔案。 當您建立另一個具有相同名稱的邏輯應用程式時,則會建立另一個快照集檔案。 在相同邏輯應用程式中,最多只能有 10 個快照集。 如果超出此限制,您會收到下列錯誤: Microsoft.Azure.WebJobs.Script.WebHost: Repository has more than 10 non-decryptable secrets backups (host)) 若要解決此錯誤,請從儲存體容器中刪除額外的快照集檔案。 |
local.settings.json | 檔案 | 包含應用程式設定、連接字串,以及工作流程在本機執行時所使用的其他設定。 這些設定和值僅適用於您在本機開發環境中執行專案時。 在部署至 Azure 期間,檔案和設定將會被忽略,也不會包含在您的部署中。 此檔案會將設定和值儲存為本機開發工具用於 值的本機環境變數 appSettings 。 您可以使用應用程式設定和參數,在執行階段和部署時間呼叫和參考這些環境變數。 重要事項:local.settings.json 檔案可能包含密碼,因此也請確定從專案原始檔控制中排除此檔案。 此檔案也包含邏輯應用程式正常運作所需的應用程式設定。 如需參考資訊,請參閱編輯應用程式設定和主機設定。 |
其他開發設定工作
建立專案之後,您可能仍有其他設定工作,以支援使用 Visual Studio Code 建置、執行和部署標準邏輯應用程式的特定本機開發案例。 下列各節說明這些案例的工作。
啟用本機執行的 Webhook
Webhook 作業是工作流程觸發程序或動作,會在作業可以執行之前等候事件發生。 具體而言,Webhook 作業會等候 HTTPS 要求從呼叫者服務或工作流程抵達,然後才能繼續作業。 例如,Webhook 包含要求觸發程序和 HTTP + Webhook 觸發程序等作業。
在 Azure 入口網站中,Azure Logic Apps 執行階段會自動訂閱 Webhook 給呼叫者服務或工作流程。 執行階段會向呼叫者服務或工作流程註冊 Webhook 的回撥 URL。 Webhook 接著會等候呼叫者使用回撥 URL 傳送要求。
不過,在 Visual Studio Code 中,您必須完成一些設定工作,Webhook 作業才能正常運作。 在此案例中,回撥 URL 會使用私人的 localhost 伺服器 (http://localhost:7071/...
),因此呼叫者無法透過網際網路直接將要求傳送至此 URL。
針對在本機執行工作流程中的 Webhook 作業,您必須設定公開 localhost 伺服器的公用 URL,並安全地將呼叫者的呼叫轉送至回撥 URL。 您可以使用轉送服務和工具,例如 ngrok,其會開啟連至您的 localhost 連接埠的 HTTP 通道,也可以使用自己的同等工具。
使用 ngrok 設定來電轉接
移至 ngrok 網站。 如果您已經有帳戶,請註冊新的帳戶或登入您的帳戶。
取得您的個人驗證權杖,您的 ngrok 用戶端需要連線並驗證對您帳戶的存取權。
若要尋找您的驗證權杖頁面,請在您的帳戶儀表板功能表上,展開 [驗證],然後選取 [您的 Authtoken]。
從 [您的 Authtoken] 方塊中,將權杖複製到安全的位置。
從 ngrok 下載頁面或您的帳戶儀表板中,下載您想要的 ngrok 版本,然後擷取 .zip 檔案。
如需詳細資訊,請參閱步驟 1:解壓縮以安裝。
在您的電腦上,開啟命令提示字元工具。 瀏覽至您擁有 ngrok.exe 檔案的位置。
將 ngrok 用戶端連線至 ngrok 帳戶,方法是執行下列命令:
ngrok authtoken <your-authentication-token>
如需詳細資訊,請參閱步驟 2:連線您的帳戶。
執行下列命令,以開啟 HTTP 通道至 localhost 連接埠 7071:
ngrok http 7071
如需詳細資訊,請參閱步驟 3:觸發。
從輸出,尋找下列這行:
http://<domain>.ngrok.io -> http://localhost:7071
複製並儲存具有此格式的 URL:
http://<domain>.ngrok.io
在應用程式設定中設定轉送 URL
在 Visual Studio Code 的設計工具上,新增您想要在工作流程中使用的 Webhook 作業。
此範例會繼續進行 HTTP + Webhook 觸發程序。
出現主機端點位置的提示時,請輸入您先前建立的轉送 (重新導向) URL。
備註
忽略提示會導致出現警告,指出您必須提供轉送 URL,因此請選取 [設定],然後輸入 URL。 完成此步驟之後,系統就不會針對您可能會新增的後續 Webhook 作業顯示提示。
若要讓提示出現,請在專案的根層級開啟 local.settings.json 檔案的捷徑功能表,然後選取 [設定 Webhook 重新導向端點]。 提示現在會出現,讓您可以提供轉送 URL。
Visual Studio Code 會將轉送 URL 新增至專案根資料夾中的 local.settings.json 檔案。 在
Values
物件中,名為Workflows.WebhookRedirectHostUri
的屬性現在會出現,並設定為轉送 URL,例如:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "FUNCTIONS_V2_COMPATIBILITY_MODE": "true", <...> "Workflows.WebhookRedirectHostUri": "http://xxxXXXXxxxXXX.ngrok.io", <...> } }
如需這些應用程式設定的詳細資訊,請參閱編輯標準邏輯應用程式的應用程式設定和主機設定。
當您第一次啟動本機偵錯工作階段或執行工作流程時,Azure Logic Apps 執行階段會向呼叫者註冊工作流程,並訂閱通知 Webhook 作業的呼叫者端點。 下次工作流程執行時,執行階段將不會註冊或重新訂閱,因為訂用帳戶註冊已存在於本機儲存體中。
當您停止使用本機執行 Webhook 作業之工作流程的偵錯工作階段時,不會刪除現有的訂用帳戶註冊。 若要取消註冊,您必須手動移除或刪除訂用帳戶註冊。
備註
工作流程開始執行之後,終端機視窗可能會顯示類似下列範例的錯誤:
message='Http request failed with unhandled exception of type 'InvalidOperationException' and message: 'System.InvalidOperationException: Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead.'
在此情況下,請開啟專案的根資料夾中的 local.settings.json 檔案,並確定屬性設定為 true
:
"FUNCTIONS_V2_COMPATIBILITY_MODE": "true"
啟用無狀態工作流程的執行歷程記錄
若要更輕鬆地偵錯無狀態工作流程,您可以啟用該工作流程的執行歷程記錄,然後在完成時停用執行歷程記錄。 針對 Visual Studio Code 遵循下列步驟,或如果您正在 Azure 入口網站中作業,請參閱在 Azure 入口網站中建立單一租用戶型工作流程。
在您的 Visual Studio Code 專案中,於根資料夾層級開啟 local.settings.json 檔案。
新增
Workflows.<workflow-name>.operationOptions
屬性,然後將值設定為WithStatelessRunHistory
,例如:Windows 作業系統
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "Workflows.<workflow-name>.OperationOptions": "WithStatelessRunHistory" } }
macOS 或 Linux
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=fabrikamstorageacct; \ AccountKey=<access-key>;EndpointSuffix=core.windows.net", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "Workflows.<workflow-name>.OperationOptions": "WithStatelessRunHistory" } }
在名為 workflow-designtime 的專案資料夾中,開啟 local.settings.json 檔案,然後進行相同的變更。
若要在完成時停用執行歷程記錄,請將
Workflows.<workflow-name>.OperationOptions
屬性設定為None
,或刪除此屬性及其值。
將成品和相依性新增至專案
在特定案例中,您的工作流程可能包含需要相依性的作業,例如組件,或地圖、結構描述或規則等成品。 在 Visual Studio Code 中,您可以將這些項目新增至專案中的對應資料夾,例如:
項目 | 檔案類型 | 說明 |
---|---|---|
地圖 | .xslt | 如需詳細資訊,請參閱在工作流程中新增轉換的對應。 |
模式 | .xsd | 如需詳細資訊,請參閱新增用於驗證的結構描述。 |
規則 | .xml | 如需詳細資訊,請參閱建立 Azure Logic Apps 規則引擎專案。 |
組件 |
-
.dll (.NET Framework 或 .NET 8) - .jar (JAVA) |
標準邏輯應用程式資源可以使用或參考特定種類的組件,您可以在 Visual Studio Code 中上傳至專案。 不過,您必須將它們新增至特定專案資料夾。 如需詳細資訊,請參閱新增參考的組件。 注意:如果您在組件支援變得可用之前擁有 NuGet 套件型 (.NET) 邏輯應用程式專案,請參閱移轉 NuGet 套件型專案以使用 lib 資料夾中的組件。 |
將您的專案轉換為 NuGet 套件型 (.NET)
根據預設,Visual Studio Code 會建立邏輯應用程式專案作為延伸模組套件組合型 (Node.js) 專案。 例如,如果您需要 NuGet 套件型專案 (.NET),以建立自己的內建連接器,您必須將預設專案轉換成 NuGet 套件型 (.NET) 專案。
這很重要
此動作是您無法復原的單向作業。
在 [總管] 窗格中,將滑鼠指標移至專案資料夾和檔案下方的任何空白區域,接著開啟捷徑功能表,然後選取 [轉換為 NuGet 型邏輯應用程式專案]。
出現提示時,請確認專案轉換。
移轉 NuGet 套件型專案以使用「lib」資料夾中的組件
這很重要
只有在組件支援變得可用之前建立的 NuGet 套件型 (.NET) 邏輯應用程式專案才需要這項工作。
如果您在標準邏輯應用程式工作流程無法使用組件支援時建立邏輯應用程式專案,您可以將下列幾行新增至您的 <project-name>.csproj 檔案,以處理使用組件的專案:
<ItemGroup>
<LibDirectory Include="$(MSBuildProjectDirectory)\lib\**\*"/>
</ItemGroup>
<Target Name="CopyDynamicLibraries" AfterTargets="_GenerateFunctionsExtensionsMetadataPostPublish">
<Copy SourceFiles="@(LibDirectory)" DestinationFiles="@(LibDirectory->'$(MSBuildProjectDirectory)\$(PublishUrl)\lib\%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>
這很重要
針對在 Linux 或 macOS 上執行的專案,請務必更新目錄分隔符號。 例如,請檢閱下圖,其中顯示先前新增至 <project-name>.csproj 檔案的程式碼:
啟用內建連接器製作
您可以使用單一租用戶 Azure Logic Apps 擴充性架構,針對您需要的任何服務,建立您自己的內建連接器。 類似於內建連接器,例如 Azure 服務匯流排和SQL Server,這些連接器提供較高的輸送量、低延遲、本機連線能力,並可在與單一租用戶 Azure Logic Apps 執行階段相同的程序中原生執行。
目前只有 Visual Studio Code 中提供製作功能,但預設未啟用。 若要建立這些連接器,請遵循下列步驟:
請檢閱並遵循文章中的步驟:Azure Logic Apps 隨處執行 - 內建連接器擴充性。
在本機執行、偵錯及測試工作流程
下列各節說明如何設定中斷點,並開始偵錯工作階段,以在本機執行及測試工作流程。
設定偵錯的中斷點
在您透過啟動偵錯工作階段來執行並測試邏輯應用程式工作流程之前,您可以在 workflow.json 檔案內為每個工作流程設定中斷點。 不需要其他設定。
目前僅支援動作的中斷點,而不是觸發程序。 每個動作定義都有這些中斷點位置:
在顯示動作名稱的行上設定起始中斷點。 當此中斷點在偵錯工作階段期間叫用時,您可以先檢閱動作的輸入,再進行評估。
在顯示動作的右大括號 (}) 的行上設定結束中斷點。 當此中斷點在偵錯工作階段期間叫用時,您可以在動作完成執行之前檢閱動作的結果。
若要新增中斷點,請遵循下列步驟:
開啟您要偵錯的工作流程的 workflow.json 檔案。
在您要設定中斷點的行上,於左側資料行中,於該資料行內部選取。 若要移除中斷點,請選取該中斷點。
啟動偵錯工作階段時,[執行] 檢視會出現在程式碼視窗的左側,而 [偵錯] 工具列會出現在頂端附近。
備註
如果 [執行] 檢視未自動出現,請按 Ctrl+Shift+D。
若要在中斷點叫用時檢閱可用的資訊,請在 [執行] 檢視中檢查 [變數] 窗格。
若要繼續工作流程執行,請在 [偵錯] 工具列上選取 [繼續] (播放按鈕)。
您可以在工作流程執行期間隨時新增和移除中斷點。 不過,如果您在執行開始之後更新 workflow.json 檔案,中斷點不會自動更新。 若要更新中斷點,請重新啟動邏輯應用程式。
如需一般資訊,請參閱中斷點 - Visual Studio Code。
對工作流程進行偵錯和測試
若要測試您的工作流程,請遵循下列步驟來執行偵錯工作階段,並尋找要求觸發程序所建立端點的 URL。 您需要此 URL,以便稍後可將要求傳送至該端點。
如果您有無狀態工作流程,請啟用工作流程的執行歷程記錄,讓偵錯變得更容易。
從 [執行] 功能表中,選取 [開始偵錯] (F5)。
[終端機] 視窗隨即開啟,使得您可以檢閱偵錯工作階段。
備註
如果您收到錯誤:「執行 preLaunchTask 'generateDebugSymbols' 後存在錯誤」,請參閱疑難排解小節:偵錯工作階段無法啟動。
現在,尋找要求觸發程序所建立端點的回撥 URL。
重新開啟 [總管] 窗格以檢視您的專案。
從workflow.json 檔案捷徑功能表中,選取 [概觀]。
複製並儲存回撥 URL,其看起來與下列 URL 類似,適用於此範例中收到 HTTP 要求時觸發程序:
http://localhost:7071/api/<workflow-name>/triggers/manual/invoke?api-version=2020-05-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<shared-access-signature>
若要測試回撥 URL 並觸發工作流程,請使用 HTTP 要求工具和其指示,將 HTTP 要求傳送至 URL,包括觸發程序預期的方法。
此範例會使用 GET 方法搭配所複製的 URL,其看起來像下列範例:
GET http://localhost:7071/api/Stateful-Workflow/triggers/manual/invoke?api-version=2020-05-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<shared-access-signature>
觸發程序引發時,範例工作流程會執行並傳送類似此範例顯示的電子郵件:
在 Visual Studio Code 中,回到工作流程的概觀頁面。 在 [執行歷程記錄] 底下,檢查工作流程執行的狀態。
小提示
如果執行狀態沒有出現,請選取 [重新整理] 來嘗試重新整理概觀頁面。 因為未符合準則或找不到任何資料而跳過的觸發程序不會發生執行。
下表顯示每個工作流程執行可能有並會在 Visual Studio Code 中顯示的可能最終狀態:
執行狀態 說明 已中止 執行因外部問題而停止或未完成,例如系統中斷或 Azure 訂用帳戶失效。 已取消 執行已觸發並啟動,但收到取消要求。 失敗 執行中至少有一個動作失敗。 工作流程中沒有任何設定要處理失敗的後續動作。 執行中 執行已觸發且正在進行中,但此狀態也會針對由於動作限制或目前的定價方案而節流的執行顯示。
提示:如果您設定診斷記錄,則也可取得任何關於所發生節流事件的資訊。已成功 執行成功。 如有任何動作失敗,工作流程中的後續動作處理了該失敗。 逾時 執行逾時,因為目前的持續時間超過執行持續時間限制,而此限制是由名為 [執行歷程記錄保留天數] 的設定所控制。 執行的持續時間是使用執行的開始時間和該開始時間的執行持續時間限制來計算。 附註:如果執行的持續時間也超過目前的 執行歷程記錄保留限制,這也會由 執行歷程記錄保留天數設定 來控制,流程執行會由每日清除作業從執行歷程記錄清除。 不論執行逾時或完成,一律會使用執行的開始時間和目前保留限制來計算保留期間。 因此,如果您減少進行中執行的持續時間限制,執行就會逾時。不過,根據執行的持續時間是否超過保留期限制,流程執行會保持或從執行歷程記錄清除。
等待中 例如,執行因為先前仍在執行的工作流程執行個體而尚未開始或已暫停。 若要檢視特定工作流程執行的每個步驟狀態、輸入和輸出,請選擇任一步驟:
在 [識別碼] 資料行中,選取工作流程執行識別碼。
在 [持續時間] 資料行旁邊,開啟工作流程執行的省略符號 (...) 功能表,然後選取 [顯示執行],例如:
Visual Studio Code 會開啟執行詳細資料檢視,並顯示工作流程執行中每個步驟的狀態。
備註
如果執行失敗,且執行詳細資料檢視中的步驟顯示 400 不正確的要求錯誤,此問題可能是因為觸發程序名稱或動作名稱較長,導致基礎統一資源識別項 (URI) 超過預設字元限制。 如需詳細資訊,請參閱「400 不正確的要求」。
下表顯示每個工作流程動作可能有並會在 Visual Studio Code 中顯示的可能狀態:
動作狀態 說明 已中止 動作因外部問題而停止或未完成,例如系統中斷或 Azure 訂用帳戶失效。 已取消 動作執行中,但收到了取消的要求。 失敗 動作失敗。 執行中 動作目前正在執行中。 已略過 因為緊接在前的動作失敗,已跳過該動作。 動作有一個 runAfter
條件,要求先完成前述動作,目前的動作才可以執行。已成功 動作成功。 重試後成功 動作只有在一或多個重試之後才會成功。 若要檢閱重試歷程記錄,請在 [執行歷程記錄詳細資料] 檢視中選取該動作,以便檢視輸入和輸出。 逾時 動作因為該動作設定所指定的逾時限制而停止。 等待中 適用於正在等候呼叫端輸入要求的 Webhook 動作。 若要檢視每個步驟的輸入和輸出,請選取您想要的步驟,例如:
若要檢視原始輸入和輸出,請選取 [顯示原始輸入] 或 [顯示原始輸出]。
若要停止偵錯工作階段,請在 [執行] 功能表上,選取 [停止偵錯] (Shift + F5)。
傳回回應
當您的工作流程開頭為 [收到 HTTP 要求時] 觸發程序時,您的工作流程可以使用名為 [回應]的要求動作,將回應傳回給傳送初始要求的呼叫者。
在工作流程設計工具的 [傳送電子郵件] 動作下,遵循下列一般步驟來新增名為 [回應] 的要求動作。
在 [回應] 動作的資訊窗格中,於 [參數] 索引標籤上,提供對呼叫者回應的必要資訊。
這個範例會傳回 Body 參數值,這是 [傳送電子郵件] 動作的輸出。
針對 Body 參數,選取編輯方塊內部,然後選取閃電圖示,這會開啟動態內容清單。 此清單會顯示來自工作流程中上述觸發程序和動作的可用輸出值。
在動態內容清單中,在 [傳送電子郵件] 底下選取 [本文]。
當您完成時,[回應] 動作的 Body 屬性現在會設定為 [傳送電子郵件] 動作的 Body 輸出值,例如:
儲存您的工作流程。
重新測試您的工作流程
若要測試您的更新,您可以重新執行偵錯工具,並傳送另一個觸發工作流程的要求,類似於在本機執行、偵錯和測試工作流程中的步驟。
在 Visual Studio Code 工具列的 [執行] 功能表中,選取 [開始偵錯] (F5)。
在建立和傳送要求的工具中,傳送另一個要求以觸發您的工作流程。
在工作流程的 [概觀] 頁面上,於 [執行歷程記錄] 底下,檢查最近執行的狀態,然後開啟 [執行詳細資料] 檢視。
例如,以下是使用回應動作更新範例工作流程之後執行的逐步狀態。
若要停止偵錯工作階段,請在 [執行] 功能表上,選取 [停止偵錯] (Shift + F5)。
準備開始部署
將標準邏輯應用程式部署至 Azure 入口網站之前,請先檢閱本節中可能需要進行的任何準備。
設定防火牆存取
如果您的環境有嚴格的網路需求或防火牆來限制流量,您必須為 Azure 受控、託管和共用連接器所建立的任何連線設定權限,並用於您的工作流程。
若要尋找這些連線的完整網域名稱 (FQDN),請遵循下列步驟:
在您的邏輯應用程式專案中,開啟 local.settings.json 檔案。
針對您建立的每個連線,尋找名為
<connection-name>-ConnectionRuntimeUrl
的屬性,其會使用下列語法:"<connection-name>-ConnectionRuntimeUrl": <connection-runtime-URL>
例如,假設您有包含這些連線的範例 local.settings.json 檔案:Office 365 連線和 AS2 連線。 這些連線會針對
<connection-name>-ConnectionRuntimeUrl
屬性使用下列個別的範例值:Office 365:
"office365-ConnectionRuntimeUrl": https://A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u.00.common.logic-<Azure-region>.azure-apihub.net/apim/office365/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
AS2:
"as2-ConnectionRuntimeUrl": https://A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u.00.common.logic-<Azure-region>.azure-apihub.net/apim/as2/b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2
範例 local.settings.json 檔案看起來類似下列版本:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "APP_KIND": "workflowapp", "ProjectDirectoryPath": "c:\\Users\\<local-username>\\Desktop\\Visual Studio Code projects\\Azure Logic Apps\fabrikam-workflows\\Fabrikam-Workflows\\Fabrikam-Workflows", "WORKFLOWS_TENANT_ID": "<Microsoft-Entra-tenant-ID>", "WORKFLOWS_SUBSCRIPTION_ID": "<Azure-subscription-ID>", "WORKFLOWS_RESOURCE_GROUP_NAME": "Fabrikam-Workflows-RG", "WORKFLOWS_LOCATION_NAME": "westcentralus", "WORKFLOWS_MANAGEMENT_BASE_URI": "https://management.azure.com/", "as2-connectionKey": "<connection-key>", "as2-ConnectionRuntimeUrl": "https://A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u.00.common.logic-<Azure-region>.azure-apihub.net/apim/as2/b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2", "office365-connectionKey": "<connection-key>", "office365-ConnectionRuntimeUrl": "https://A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u.00.common.logic-<Azure-region>.azure-apihub.net/apim/office365/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1", } }
將這些連線執行階段 URL 複製並儲存在安全的地方,讓您可以使用這項資訊來設定防火牆。
當您準備好時,請使用已儲存的 URL 來設定防火牆。 如需詳細資訊,請參閱下列文件:
部署至 Azure
若要從 Visual Studio Code 部署標準邏輯應用程式,您可以直接將專案發佈至 Azure。 您可以將邏輯應用程式發佈為新的資源,其會自動建立任何必要的資源,例如 Azure 儲存體帳戶,類似於函數應用程式需求。 或者,您可以將邏輯應用程式發佈至先前部署的標準邏輯應用程式資源,以覆寫已部署的版本。
標準邏輯應用程式資源的部署,需要您在部署期間選取主控方案和定價層。 如需詳細資訊,請參閱主控方案和定價層。
發佈至新的標準邏輯應用程式資源
在 [總管] 窗格中,將滑鼠指標移至專案資料夾和檔案下方的任何空白區域、開啟捷徑功能表,然後選取 [部署至邏輯應用程式]。
雖然您不需要開啟任何檔案即可部署,但請確定您已儲存計劃部署的所有項目。
系統會提示您輸入下列目的地標準邏輯應用程式資源的選項。 您可以建立新的標準邏輯應用程式,或在 Azure 中選取現有的已部署標準邏輯應用程式:
- 在 Azure 中建立新的邏輯應用程式 (標準) (快速)
- 在 Azure 進階中建立新的邏輯應用程式 (標準)
- 如果有的話,請從先前部署的標準邏輯應用程式資源中選取。
針對部署選項,選取是否要建立或使用現有的目的地邏輯應用程式資源。
此範例會繼續進行在 Azure 進階中建立新的邏輯應用程式 (標準)。
請遵循下列步驟來建立新的目的地邏輯應用程式資源:
輸入目的地邏輯應用程式的全域唯一名稱。
此範例會使用 Fabrikam-Workflows-App。
針對要部署的位置,選取 Azure 區域。
此範例使用 [美國中西部]。
針對主控方案,請從下列選項中選擇:
主控方案 說明 工作流程標準 部署為裝載於單一租用戶 Azure Logic Apps 的新標準邏輯應用程式資源。 混合式 部署為裝載在您自己的基礎結構上的標準邏輯應用程式。
注意:選取此選項之前,請確定您已設定必要的基礎結構。 如需詳細資訊,請參閱使用混合式部署為標準邏輯應用程式設定您自己的基礎結構。針對 Windows App Service 方案,選擇下列其中一個選項:
- 建立新的 App Service 方案
- 選取所選 Azure 區域中的現有 App Service 方案 (僅限以 Windows 為基礎的方案),如果有的話。
此範例會選取 [建立新的 App Service 方案]。
針對新方案,提供全域唯一的名稱,然後選取定價層。
此範例使用 Fabrikam-Workflows-App-Service-Plan,並選取 WS1 工作流程標準層。
如需詳細資訊,請參閱主控方案和定價層。
針對目的地 Azure 資源群組,選取與您專案相同的資源群組,以獲得最佳效能。
此範例會使用先前建立的相同群組 Fabrikam-Workflows-RG。
備註
雖然您可以建立或使用不同的資源群組,但這樣做可能會影響效能。 如果您建立或選擇不同的資源群組,但在出現確認提示之後取消,則也會取消您的部署。
若要讓 Azure 儲存體帳戶與啟用儲存執行歷程記錄資訊的工作流程搭配使用,請選擇下列選項:
- 建立新的儲存體帳戶
- 如果有的話,請從現有的 Azure 儲存體帳戶中選取。
此範例會選取 [建立新的儲存體帳戶]。
輸入儲存體帳戶的全域唯一名稱。 您只能使用小寫字母和數字。
此範例使用 fabrikamstorageaccount<數字>。
如需在此範例中使用 SQL 儲存體的選項,請選取 [否]。
如果您已設定 SQL 資料庫以用於儲存體,請遵循設定標準邏輯應用程式工作流程的 SQL 資料庫儲存體,您可以選取 [是]。
針對其會啟用邏輯應用程式的診斷記錄和追蹤的 Application Insights 資源,請選擇下列選項:
- 建立新的 Application Insights 資源
- 暫時跳過。 您可以在部署之後設定 Application Insights。
- 如果有的話,請選取現有的 Application Insights 資源。
此範例會選取 [暫時跳過]。
備註
如果您有要使用的 Application Insights 資源,您可以選取該資源。
若要在此時建立新的 Application Insights 資源,以便啟用診斷記錄和追蹤,請參閱在部署期間啟用 Application Insights。
如需 Application Insights 的詳細資訊,請參閱下列文件:
選取 [立即跳過] 或現有的 Application Insights 資源之後,Visual Studio Code 會顯示開始部署的確認訊息。 此訊息也建議獲得最佳效能,將受控作業的連線資源放在與邏輯應用程式資源和工作流程相同的資源群組中。 在 Azure Logic Apps 中,受控作業連線會以個別 Azure 資源的形式存在。
當您準備好部署時,請在確認訊息中選取 [部署]。
Visual Studio Code 會開始建立和部署必要的資源,以將邏輯應用程式發佈至 Azure。
若要檢視及監視部署程序,請在 [檢視] 功能表上,選取 [輸出]。
在 [輸出] 視窗工具列的範圍清單中,選取 [Azure Logic Apps (標準)]。
當 Visual Studio Code 完成將邏輯應用程式部署至 Azure 時,會出現一則訊息,指出邏輯應用程式建立已成功完成,例如:
邏輯應用程式資源和工作流程現在會在 Azure 中即時、啟用及執行。
在部署期間啟用 Application Insights
若要在部署邏輯應用程式期間使用 Application Insights 啟用診斷記錄和追蹤,請遵循下列步驟:
選取現有的 Application Insights 資源或 [建立新的 Application Insights 資源]。
在 Azure 入口網站中,移至您的 Application Insights 資源。
在資源功能表上,選取 [概觀]。 尋找並複製 [檢測金鑰] 值。
在 Visual Studio Code 中,在您的專案的根資料夾中,開啟 local.settings.json 檔案。
在
Values
物件中,新增APPINSIGHTS_INSTRUMENTATIONKEY
屬性,並將值設定為檢測金鑰,例如:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "APPINSIGHTS_INSTRUMENTATIONKEY": <instrumentation-key> } }
檢查工作流程觸發程序和動作名稱是否正確出現在 Application Insights 執行個體中。
在 Azure 入口網站中,移至您的 Application Insights 資源。
在資源功能表的 [調查] 底下,選取 [應用程式對應]。
檢閱出現在對應中的作業名稱。
來自內建觸發程序的某些輸入要求可能會在應用程式對應中顯示為重複項目。 這些重複項目會使用工作流程名稱作為作業名稱,而不是使用
WorkflowName.ActionName
格式,並且源自 Azure Functions 主機。
選擇性地調整邏輯應用程式所收集並傳送至 Application Insights 執行個體之追蹤資料的嚴重性層級。
每次發生工作流程相關事件時,例如當觸發工作流程或動作執行時,執行階段會發出各種追蹤。 這些追蹤會涵蓋工作流程的存留期,包括但不限於下列事件類型:
- 服務活動,例如啟動、停止和錯誤。
- 作業和發送器活動。
- 工作流程活動,例如觸發程序、動作和執行。
- 儲存體要求活動,例如成功或失敗。
- HTTP 要求活動,例如輸入、輸出、成功和失敗。
- 任何開發追蹤,例如偵錯訊息。
每個事件類型都會獲指派某個嚴重性層級。 例如,
Trace
層級會擷取最詳細的訊息,而Information
層級會擷取工作流程中的一般活動,例如,邏輯應用程式、工作流程、觸發程序和啟動和停止動作。下表描述嚴重性層級及其追蹤類型:
嚴重性等級 追蹤類型 重要 描述邏輯應用程式工作流程中無法復原失敗的記錄。 偵錯 您可以在開發期間 (例如輸入和輸出 HTTP 呼叫) 用於調查的記錄。 錯誤 指出工作流程執行中失敗 (但不是邏輯應用程式中的一般失敗) 的記錄。 資訊 追蹤邏輯應用程式或工作流程中一般活動的記錄,例如:
- 觸發程序、動作或執行開始和結束時。
- 邏輯應用程式開始或結束時。追蹤 包含最詳細訊息的記錄,例如儲存體要求或發送器活動,加上與工作流程執行活動相關的所有訊息。 警告 強調邏輯應用程式中的異常狀態,但不會防止其執行的記錄。 若要設定嚴重性層級,請在專案的根層級開啟 host.json 檔案,然後尋找
logging
物件。 此物件會控制您的邏輯應用程式中所有工作流程的記錄篩選,並遵循記錄類型篩選的 ASP.NET Core 配置。{ "version": "2.0", "logging": { "applicationInsights": { "samplingExcludedTypes": "Request", "samplingSettings": { "isEnabled": true } } } }
如果
logging
物件不包含含有logLevel
屬性的Host.Triggers.Workflow
物件,請新增這些項目。 將屬性設定為您想要的追蹤類型的嚴重性層級,例如:{ "version": "2.0", "logging": { "applicationInsights": { "samplingExcludedTypes": "Request", "samplingSettings": { "isEnabled": true } }, "logLevel": { "Host.Triggers.Workflow": "Information" } } }
部署後工作
下列各節說明邏輯應用程式完成部署之後要執行的工作。
確認 Azure 入口網站中的部署
將邏輯應用程式從 Visual Studio Code 部署至 Azure 入口網站之後,請確認邏輯應用程式出現在入口網站中。 Azure 資源會根據其資源類型在入口網站中組織並分組。 若要尋找標準邏輯應用程式,請遵循下列步驟:
使用您的 Azure 帳戶登入 Azure 入口網站 。
在 Azure 標題搜尋方塊中,輸入您的邏輯應用程式名稱,這應該會顯示為 [資源] 區段中的結果。 選取邏輯應用程式以開啟資源。
在邏輯應用程式功能表的 [工作流程] 之下,選取 [工作流程]。
在 [工作流程] 頁面上,選取您的工作流程。
在工作流程功能表上的 [工具] 底下,選取 [設計工具]。 確認工作流程如預期般出現。
您現在可以在 Azure 入口網站中對此工作流程進行變更。
請務必啟用已部署邏輯應用程式的監視體驗,以便檢視工作流程執行歷程記錄、輸入、輸出和其他相關資訊。
啟用已部署邏輯應用程式的監視體驗
您必須先在邏輯應用程式資源上啟用該體驗,才能檢閱已部署標準邏輯應用程式資源的任何工作流程執行歷程記錄、輸入、輸出和相關資訊,以及 Azure 入口網站中的監視體驗。
在 Azure 入口網站中,開啟已部署的標準邏輯應用程式資源。
在資源功能表上的 [API] 底下,選取 [CORS]。
在 CORS 窗格的 [允許的來源] 底下,新增萬用字元 (*)。
完成時,在 CORS 工具列上,選取 [儲存]。
在部署後啟用或開啟 Application Insights
在工作流程執行期間,邏輯應用程式工作流程會發出遙測和其他事件。 您可以使用此遙測來深入了解工作流程的執行效能,以及 Azure Logic Apps 執行階段的運作方式。 Application Insights 可讓您使用近即時的遙測 (即時計量) 來啟用邏輯應用程式的診斷記錄、追蹤和監視功能。 當您使用遙測資料來診斷問題、設定警示和建置圖表時,這項功能可協助您更輕鬆地調查失敗和效能問題。
如果您先前未設定 Application Insights,您可以在從 Visual Studio Code 進行邏輯應用程式部署之後,在 Azure 入口網站中啟用此功能。 您必須在 Azure 中擁有 Application Insights 資源,但您可以事先個別建立此資源,或在部署後啟用此功能時建立。
如果您先前在部署期間從 Visual Studio Code 設定 Application Insights,您只要在 Azure 入口網站中從邏輯應用程式開啟 Application Insights 資源即可。
為已部署的邏輯應用程式啟用 Application Insights
在 Azure 入口網站中,尋找並開啟您已部署的邏輯應用程式。
在邏輯應用程式功能表上的 [監視] 底下,選取 [Application Insights]。
在 [Application Insights] 頁面上,選取 [開啟 Application Insights]。
在 [Application Insights] 頁面更新之後,在 [變更您的資源] 區段中,從下列選項中選取:
建立新資源
Azure 會使用目前的訂用帳戶和資源群組,為 Application Insights 和 Log Analytics 工作區建立資源。 如果您想要使用不同的訂用帳戶和資源群組,請參閱建立新的 Application Insights 資源,然後返回此頁面。
財產 說明 新資源名稱 接受產生的名稱或提供另一個名稱。 地點 選取 Azure 區域。 Log Analytics 工作區 如果有的話,請選取現有的工作區。 否則,系統會為您建立預設工作區。 如需詳細資訊,請參閱 Log Analytics 工作區概觀。 選取現有資源:
選取 Application Insights 資源的 Azure 訂用帳戶。
選取您的 Application Insights 資源。
完成時,請在頁面底部選取 [套用]。
從邏輯應用程式開啟 Application Insights
在 Azure 入口網站中,尋找並開啟您已部署的邏輯應用程式。
在邏輯應用程式功能表上的 [監視] 底下,選取 [Application Insights]。
在 [Application Insights] 頁面上,選取 Application Insights 資源的連結。
Application Insights 開啟之後,您可以檢閱邏輯應用程式的各種計量。 如需詳細資訊,請參閱下列文章:
- Azure Logic Apps 隨處執行 - 使用 Application Insights 進行監視 - 第 1 部分
- Azure Logic Apps 隨處執行 - 使用 Application Insights 進行監視 - 第 2 部分
疑難排解錯誤和問題
設計工具無法開啟
嘗試開啟設計工具時,您收到此錯誤:「無法啟動工作流程設計階段」。 如果您先前嘗試開啟設計工具,但已中止或刪除專案,則延伸模組套件組合可能無法正確下載。 若要檢查是否基於此原因,請遵循下列步驟:
在 Visual Studio Code 中,開啟 [輸出] 視窗。 從 [檢視] 功能表,選取 [輸出]。
從輸出視窗標題列中的清單,選取 [Azure Logic Apps (標準)],以便檢閱延伸模組的輸出,例如:
檢閱輸出,並檢查此錯誤訊息是否出現:
A host error has occurred during startup operation '<operation-ID>'. System.Private.CoreLib: The file 'C:\Users\<user-name>\AppData\Local\Temp\Functions\ ExtensionBundles\Microsoft.Azure.Functions.ExtensionBundle.Workflows\1.1.7\bin\ DurableTask.AzureStorage.dll' already exists. Value cannot be null. (Parameter 'provider') Application is shutting down... Initialization cancellation requested by runtime. Stopping host... Host shutdown completed.
若要解決此錯誤,請刪除位於這個位置 的 < 資料夾,然後重試在設計工具中開啟 > 檔案。
對於先前建立的工作流程,設計工具選擇器遺漏新的觸發程序和動作
單一租用戶 Azure Logic Apps 支援 Azure 函式作業、Liquid 作業和 XML 作業的內建動作,例如 XML 驗證和轉換 XML。 不過,對於先前建立的邏輯應用程式,如果 Visual Studio Code 使用版本過期的延伸套件組合 (Microsoft.Azure.Functions.ExtensionBundle.Workflows
),這些動作可能不會出現在設計工具選擇器中供您選取。
此外,除非您在建立邏輯應用程式時啟用或選取 [使用來自 Azure 的連接器],否則 Azure 函式作業連接器和動作不會出現在設計工具選擇器中。 如果您在應用程式建立時未啟用 Azure 部署的連接器,則可以從 Visual Studio Code 的專案中加以啟用。 開啟 workflow.json 捷徑功能表,然後選取 [使用來自 Azure 的連接器]。
若要修正過期的套件組合,請遵循下列步驟來刪除過期的套件組合,這會使得 Visual Studio Code 自動將延伸模組套件組合更新為最新版本。
備註
此解決方案僅適用於您使用 Visual Studio Code 搭配 Azure Logic Apps (標準) 延伸模組建立和部署的邏輯應用程式,而非您使用 Azure 入口網站建立的邏輯應用程式。 請參閱 Azure 入口網站中的設計工具遺漏支援的觸發程序和動作。
儲存您不想遺失的任何工作,並關閉 Visual Studio Code。
在您的電腦上,瀏覽至下列資料夾,其包含現有套件組合的版本設定資料夾:
...\Users\<user-name>\.azure-functions-core-tools\Functions\ExtensionBundles\Microsoft.Azure.Functions.ExtensionBundle.Workflows
刪除舊版套件組合的版本資料夾,例如,如果您有版本 1.1.3 的資料夾,請刪除該資料夾。
現在,瀏覽至下列資料夾,其包含必要 NuGet 套件的版本化資料夾:
...\Users\<user-name>\.nuget\packages\microsoft.azure.workflows.webjobs.extension
刪除舊版套件的版本資料夾。
在設計工具中重新開啟 Visual Studio Code、您的專案和 workflow.json 檔案。
遺漏的觸發程序和動作現在會出現在設計工具中。
「400 不正確的要求」會出現在觸發程序或動作上
當執行失敗,且您在監視檢視中檢查執行時,此錯誤可能會出現在名稱較長的觸發程序或動作上,這會導致基礎統一資源識別項 (URI) 超過預設字元限制。
若要解決此問題並調整較長的 URI,請依照下列這些步驟編輯電腦上的 UrlSegmentMaxCount
和 UrlSegmentMaxLength
登錄機碼。
Windows 的 Http.sys 登錄設定一文中描述這些機碼的預設值。
這很重要
開始之前,請確定您儲存工作。 完成之後,此解決方案會要求您重新啟動電腦,讓變更生效。
在您的電腦上,開啟 [執行] 視窗,然後執行
regedit
命令,其會開啟登錄編輯程式。在 [使用者帳戶控制] 方塊中,選取 [是] 以允許對電腦的變更。
在左窗格中的 [電腦] 底下,展開此路徑的節點,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters,然後選取 [參數]。
在右窗格中,尋找
UrlSegmentMaxCount
和UrlSegmentMaxLength
登錄機碼。增加這些機碼值,使得 URI 可容納您想要使用的名稱。 如果這些機碼不存在,請遵循下列步驟,將它們新增至 Parameters 資料夾:
從 [參數] 捷徑功能表中,選取 [新增]> [DWORD (32 位元) 值]。
在出現的編輯方塊中,輸入
UrlSegmentMaxCount
作為新機碼名稱。開啟新機碼的捷徑功能表,然後選取 [修改]。
在出現的 [編輯字串] 方塊中,以十六進位或十進位格式輸入您想要的 [數值資料] 機碼值。 例如,十六進位中的
400
相當於十進位中的1024
。若要新增
UrlSegmentMaxLength
機碼值,請重複這些步驟。
增加或新增這些機碼值之後,登錄編輯程式看起來會像此範例:
當您準備好時,請重新啟動電腦,讓變更生效。
偵錯工作階段無法啟動
嘗試啟動偵錯工作階段時,您收到錯誤:「執行 preLaunchTask 'generateDebugSymbols' 後存在錯誤」。 若要解決此問題,請編輯專案中的 tasks.json 檔案,以跳過符號產生。
在您的專案中,展開 .vscode** 資料夾,然後開啟 tasks.json 檔案。
在下列工作中,刪除行
"dependsOn: "generateDebugSymbols"
,以及結束前一行的逗號,例如:以前:
{ "type": "func", "command": "host start", "problemMatcher": "$func-watch", "isBackground": true, "dependsOn": "generateDebugSymbols" }
之後:
{ "type": "func", "command": "host start", "problemMatcher": "$func-watch", "isBackground": true }