Share via


シングルテナントの Azure Logic Apps に Standard ロジック アプリ ワークフローの DevOps デプロイを設定する

適用対象: Azure Logic Apps (Standard)

この記事では、DevOps ツールとプロセスを使用して、Visual Studio Code からインフラストラクチャに対して、Standard ロジック アプリ プロジェクトをシングルテナントの Azure Logic Apps にデプロイする方法について示します。 デプロイに GitHub と Azure DevOps のどちらを好むかに基づいて、シナリオに最適なパスとツールを選択します。 サンプルのロジック アプリ プロジェクトと Azure デプロイの例を含む同梱のサンプルは、GitHub または Azure DevOps を使用して使用できます。 シングルテナント用の DevOps の詳細については、「DevOps deployment overview for single-tenant Azure Logic Apps」(シングル テナント の Azure Logic Apps 用の DevOps デプロイの概要)を参照してください。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。

  • Visual Studio Code と Azure Logic Apps (Standard) 拡張機能を使用して作成された Standard ロジック アプリ プロジェクト。

    ロジック アプリ プロジェクトまたはインフラストラクチャをまだ設定していない場合は、使用するソースとデプロイのオプションに基づき、同梱のサンプル プロジェクトを使用してサンプル アプリとインフラストラクチャをデプロイできます。 これらのサンプル プロジェクトと、サンプル ロジック アプリを実行するために含まれるリソースの詳細については、「Deploy your infrastructre」(インフラストラクチャのデプロイ) を参照してください。

  • Azure にデプロイする場合は、Azure で作成された既存の ロジック アプリ (Standard) リソースが必要です。 空のロジック アプリ リソースをすばやく作成するには、「Create single-tenant based logic app workflows - Portal」(シングルテナント ベースのロジック アプリ ワークフローの作成 - ポータル)を参照してください。

インフラストラクチャ リソースのデプロイ

ロジック アプリ プロジェクトまたはインフラストラクチャをまだ設定していない場合は、使用するソースとデプロイのオプションに基づき、次のサンプル プロジェクトを使用してサンプル アプリとインフラストラクチャをデプロイできます。

どちらのサンプルにも、ロジックアプリが実行に使用する次のリソースが含まれています。

リソース名 必須 Description
ロジック アプリ (Standard) Yes この Azure リソースには、シングルテナント Azure Logic Apps で実行されるワークフローが含まれています。
Functions Premium または App Service ホスティング プラン Yes この Azure リソースでは、計算、処理、ストレージ、ネットワークなど、ロジック アプリの実行に使用するホスティング リソースを指定します。

重要: 現在のエクスペリエンスでは、 ロジック アプリ (standard) リソースには、Functions Premium ホスティング プランに基づくWorkflow Standard ホスティング プランが必要です。

Azure ストレージ アカウント はい (ステートフルとステートレスの両方のワークフローの場合) この Azure リソースには、ワークフローに関するメタデータ、アクセスの制御用のキー、状態、入力、出力、実行履歴、およびその他の情報が格納されます。
Application Insights オプション この Azure リソースは、ワークフローの監視機能を提供します。
API 接続 省略可能 (存在しない場合) これらの Azure リソースは、ワークフローで、Office 365、SharePoint などのマネージ コネクタ操作を実行するために使用するマネージド API 接続を定義します。

重要: ロジック アプリ プロジェクトでは、connections.json ファイルに、ワークフローで使用する任意のマネージド API 接続と Azure functions のメタデータ、エンドポイント、およびキーが含まれています。 環境ごとに異なる接続と関数を使用するには、connections.json ファイルをパラメーター化し、エンドポイントを更新してください。

詳細については、 API 接続リソースとアクセスポリシーを確認してください。

Azure Resource Manager (ARM) テンプレート オプション この Azure リソースでは、再利用または エクスポートできるベースライン インフラストラクチャのデプロイを定義します。

API 接続リソースとアクセス ポリシー

シングルテナントの Azure Logic Apps では、ワークフロー内のすべてのマネージドまたは API 接続リソースに、関連付けられたアクセス ポリシーが必要です。 このポリシーでは、マネージド コネクタ インフラストラクチャにアクセスするための適切なアクセス許可を提供するために、ロジック アプリの ID が必要です。 同梱のサンプル プロジェクトには、これらのアクセス ポリシーを含む、必要なすべてのインフラストラクチャ リソースを含む ARM テンプレートが含まれています。

次の図は、ロジック アプリ プロジェクトとインフラストラクチャ リソース間の依存関係を示しています。

シングルテナントの Azure Logic Apps モデルでのロジック アプリ プロジェクト用にインフラストラクチャの依存関係を示す概念図。

ロジック アプリ リソースのデプロイ (zip デプロイ)

ロジック アプリ プロジェクトをソース リポジトリにプッシュしたら、Azure の内部または外部のどちらかで、ロジック アプリをインフラストラクチャにデプロイするビルドおよびリリース パイプラインを設定できます。

プロジェクトをビルドする

ロジック アプリのプロジェクトの種類に基づいてビルド パイプラインを設定するには、次の表の対応するアクションを実行します。

プロジェクトの種類 説明と手順
Nuget ベース NuGet ベースのプロジェクト構造は、.NET Framework に基づきます。 これらのプロジェクトをビルドするには、.NET Standard のビルド手順に従ってください。 詳細については、「MSBuild を使用して NuGet パッケージを作成する」のドキュメントを参照してください。
バンドルベース 拡張機能のバンドルベースのプロジェクトは言語固有ではないため、言語固有のビルド手順は必要ありません。 任意のメソッドを使用して、プロジェクトファイルを zip 圧縮できます。

重要: .zip ファイルに、すべてのワークフロー フォルダー、host.json、connections.json などの構成ファイル、および他の関連ファイルなど、実際のビルド成果物が含まれていることを確認してください。

Azure にリリースする前

ロジック アプリ プロジェクトの connections.json ファイル内のマネージド API 接続は、Visual Studio Code でローカルで使用するために作成されています。 プロジェクトの成果物を Visual Studio Code から Azure にリリースする前に、これらの成果物を更新する必要があります。 Azure でマネージド API 接続を使用するには、それらの認証方法を更新して、Azure で使用するための正しい形式にする必要があります。

認証の種類を更新する

認証を使用するマネージド API 接続ごとに、最初と 2 番目のコード例にそれぞれ示すように、認証オブジェクトを Visual Studio Code のローカル形式から Azure portal 形式に更新する必要があります。

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 portal の形式

{
   "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 の関連付けられている手順に従います。

Note

現在、Azure Logic Apps は Azure デプロイ スロットをサポートしていません。

GitHub のデプロイでは、GitHub Actions (Azure Functions の GitHub Actions など) を使用してロジック アプリをデプロイできます。 この操作を行うには、次の情報を渡す必要があります。

  • デプロイに使用するロジック アプリの名前
  • すべてのワークフロー フォルダー、host.json、connections.json などの構成ファイル、および他の関連ファイルなど、実際のビルド成果物が含まれている .zip ファイル。
  • 発行プロファイル (認証に使用される)
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

詳細については、「Continuous delivery by using GitHub Action」\(GitHub アクションを使用することによる継続的デリバリー)ドキュメントを参照してください。

Azure へのリリース後

各 API 接続にはアクセス ポリシーがあります。 zip のデプロイが完了したら、Azure portal でロジック アプリ リソースを開き、各 API 接続のアクセス ポリシーを作成して、デプロイされたロジック アプリのアクセス許可を設定する必要があります。 zip のデプロイでは、アプリの設定は作成されません。 そのため、デプロイ後に、ローカルの Visual Studio Code プロジェクトの local.settings.json ファイルに基づいて、これらのアプリ設定を作成する必要があります。

次の手順

シングルテナント Azure Logic Apps でのエクスペリエンスについてご意見をお聞かせください。