在單一租用戶 Azure Logic Apps 中設定標準邏輯應用程式工作流程的 DevOps 部署

適用於:Azure Logic Apps (標準)

本文顯示如何使用 DevOps 工具和程序,將標準邏輯應用程式專案從您基礎結構的 Visual Studio Code 部署至單一租用戶 Azure Logic Apps。 根據您偏好使用 GitHub 還是 Azure DevOps 來進行部署,選擇最適合您案例的路徑和工具。 您可以使用所包括的範例,而這些範例包含範例邏輯應用程式專案,以及使用 GitHub 或 Azure DevOps 進行 Azure 部署的範例。 如需單一租用戶 DevOps 的詳細資訊,請檢閱單一租用戶 Azure Logic Apps 的 DevOps 部署概觀

必要條件

部署基礎結構資源

如果您尚未設定邏輯應用程式專案或基礎結構,則可以使用下列範例專案,根據您偏好使用的來源和部署選項來部署範例應用程式和基礎結構:

這兩個範例都包括邏輯應用程式用來執行的下列資源。

資源名稱 必要 Description
邏輯應用程式 (標準) Yes 此 Azure 資源包含在單一租用戶 Azure Logic Apps 中執行的工作流程。
Functions 進階版或 App Service 主控方案 Yes 此 Azure 資源會指定要用於執行邏輯應用程式的裝載資源,例如計算、處理、儲存體、網路等。

重要事項:在目前的體驗中,「邏輯應用程式 (標準)」資源需要工作流程標準主控方案,而此方案是以 Functions 進階版主控方案為基礎。

Azure 儲存體帳戶 是,適用於具狀態和無狀態工作流程 此 Azure 資源會儲存中繼資料、用於存取控制的金鑰、狀態、輸入、輸出、執行歷程記錄,以及工作流程的其他資訊。
Application Insights 選擇性 此 Azure 資源會為您的工作流程提供監視功能。
API 連線 選用 (如果不存在) 這些 Azure 資源會定義工作流程用來執行受控連接器作業的任何受控 API 連線,例如 Office 365、SharePoint 等。

重要事項:在您的邏輯應用程式專案中,connections.json 檔案包含工作流程所使用的任何受控 API 連線和 Azure 函數的中繼資料、端點和金鑰。 若要在每個環境中使用不同的連線和函數,請確定您將 connections.json 檔案參數化,並更新端點。

如需詳細資訊,請檢閱 API 連線資源和存取原則

Azure Resource Manager (ARM) 範本 選擇性 此 Azure 資源會定義您可以重複使用或匯出的基準基礎結構部署。

API 連線資源和存取原則

在單一租用戶 Azure Logic Apps 中,工作流程中的每個受控或 API 連線資源都需要相關聯的存取原則。 此原則需要邏輯應用程式的身分識別,才能提供正確的權限來存取受控連接器基礎結構。 所包括的範例專案包括 ARM 範本,而此範本包括所有必要的基礎結構資源 (包括這些存取原則)。

下圖顯示邏輯應用程式專案與基礎結構資源之間的相依性:

此概念圖表顯示單一租用戶 Azure Logic Apps 模型中邏輯應用程式專案的基礎結構相依性。

部署邏輯應用程式資源 (zip 部署)

將邏輯應用程式專案推送至來源存放庫之後,您可以在 Azure 內或外部設定建置和發行管線,以將邏輯應用程式部署至基礎結構。

建置專案

若要根據邏輯應用程式專案類型來設定建置管線,請完成下表中的對應動作:

專案類型 描述和步驟
NuGet 型 NuGet 型專案結構是以 .NET Framework 為基礎。 若要建置這些專案,請務必遵循 .NET Standard 的建置步驟。 如需詳細資訊,請檢閱使用 MSBuild 建立 NuGet 套件的文件。
套件組合型 延伸模組套件組合型專案並非語言特有的,而且不需要任何語言特定建置步驟。 您可以使用任何方法來壓縮專案檔。

重要事項:請確定您的 .zip 檔案包含實際組建成品,包括所有工作流程資料夾、host.json 和 connections.json 這類設定檔,以及任何其他相關檔案。

發行至 Azure 之前

邏輯應用程式專案 connections.json 檔案內的受控 API 連線是專為在 Visual Studio Code 中使用而建立。 您必須先更新專案成品,才能將這些成品從 Visual Studio Code 發行至 Azure。 若要在 Azure 中使用受控 API 連線,您必須更新其驗證方法,使其格式正確以用於 Azure。

更新驗證類型

針對使用驗證的每個受控 API 連線,您必須分別將 authentication 物件從 Visual Studio Code 本機格式更新為 Azure 入口網站格式,如第一個和第二個程式碼範例所示:

Visual Studio Code 格式

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
      },
      "connection": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
      },
      "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
      "authentication": {
         "type": "Raw",
         "scheme": "Key",
         "parameter": "@appsetting('sql-connectionKey')"
      }
   }
}

Azure 入口網站格式

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
      },
      "connection": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
      },
      "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
      "authentication": {
         "type": "ManagedServiceIdentity",
      }
   }
}

視需要建立 API 連線

如果您要將邏輯應用程式工作流程部署至與本機開發環境不同的 Azure 區域或訂用帳戶,則也必須務必在部署之前建立這些受控 API 連線。 Azure Resource Manager 範本 (ARM 範本) 部署是建立受控 API 連線的最簡單方式。

下列範例顯示 ARM 範本中的 SQL 受控 API 連線資源定義:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

若要尋找 properties 物件中用來完成連線資源定義所需的值,您可以針對特定連接器使用下列 API:

GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01

在回應中,尋找 connectionParameters 物件,其中包含完成該特定連接器資源定義所需的所有資訊。 下列範例顯示 SQL 受控連線的範例資源定義:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows",
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

或者,您可以在 Azure Logic Apps 中使用工作流程設計工具建立連線時,擷取並檢閱網路追蹤。 尋找如先前所述傳送至連接器受控 API 的 PUT 呼叫,並檢閱要求本文以取得所有必要資訊。

發行至 Azure

若要設定部署至 Azure 的發行管線,請遵循 GitHub、Azure DevOps 或 Azure CLI 的相關聯步驟。

注意

Azure Logic Apps 目前不支援 Azure 部署位置。

針對 GitHub 部署,您可以使用 GitHub Actions 來部署邏輯應用程式,例如 Azure Functions 中的 GitHub Actions。 此動作需要您傳遞下列資訊:

  • 用於部署的邏輯應用程式名稱
  • .zip 檔案包含實際組建成品,包括所有工作流程資料夾、host.json 和 connections.json 這類設定檔,以及任何其他相關檔案。
  • 您的發行設定檔,其用於驗證
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

如需詳細資訊,請檢閱使用 GitHub 動作的持續傳遞文件。

發行至 Azure 之後

每個 API 連線都會有存取原則。 zip 部署完成之後,您必須在 Azure 入口網站中開啟邏輯應用程式資源,並建立每個 API 連線的存取原則,以設定已部署邏輯應用程式的權限。 zip 部署不會為您建立應用程式設定。 因此,在部署之後,您必須根據本機 Visual Studio Code 專案中的 local.settings.json 檔案來建立這些應用程式設定。

下一步

我們想要聽取您對單一租用戶 Azure Logic Apps 的體驗!