Azure Arc 対応 Logic Apps を使用してシングルテナント ベースのロジック アプリ ワークフローを作成してデプロイする (プレビュー)

注意

この機能はプレビュー段階にあり、「Microsoft Azure プレビューの追加使用条件」が適用されます。

Azure Arc 対応 Logic Apps と Azure portal を使用すると、運用および管理する Kubernetes インフラストラクチャにシングルテナント ベースのロジック アプリ ワークフローを作成してデプロイできます。 ロジック アプリは、Azure App Service プラットフォーム拡張機能バンドルをインストールして有効にした Azure Arc 対応 Kubernetes クラスターにマップされた "カスタムの場所" で実行されます。

たとえば、このクラスターは、Azure Kubernetes Service、ベアメタル Kubernetes、または別のセットアップにすることができます。 拡張機能バンドルを使用すると、Kubernetes クラスターで Azure Logic Apps、Azure App Service、Azure Functions などのプラットフォーム サービスを実行できます。

詳細については、次のドキュメントを確認してください。

前提条件

このセクションでは、ロジック アプリ ワークフローの作成とデプロイに使用できるすべてのアプローチとツールに共通する前提条件について説明します。 ツール固有の前提条件が、対応する手順と共に表示されます。

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

  • Azure Arc 対応 Kubernetes クラスターと、Azure Logic Apps、Azure App Service、Azure Functions をホストして実行できる "カスタムの場所" を備えた Kubernetes 環境。 Kubernetes 環境、カスタムの場所、ロジック アプリ リソースには、同じ場所を使用するようにしてください。

    たとえば、西ヨーロッパでデプロイして実行するには、3 つのリソースすべてについて、場所として西ヨーロッパを使用します。

    また、Kubernetes クラスターで App Service バンドル拡張機能を作成するときに、ロジック アプリ ワークフローを実行するために既定のスケーリング動作を変更することもできます。 Azure CLI コマンド az k8s-extension create を使用して拡張機能を作成する場合は、構成設定 keda.enabled=true を必ず含めてください。

    az k8s-extension create {other-command-options} --configuration-settings "keda.enabled=true"

    詳細については、次のドキュメントを確認してください。

  • 独自の Azure Active Directory (Azure AD) ID

    ワークフローで Office 365 Outlook や Azure Storage など、Azure でホストされる接続を使用する必要がある場合は、ロジック アプリでの認証に Azure AD ID を使用する必要があります。 Azure Arc 対応 Logic Apps は任意のインフラストラクチャで実行できますが、Azure でホストされる接続を使用するためのアクセス許可を持つ ID が必要です。 この ID を設定するには、ロジック アプリが必要な ID として使用するアプリの登録を Azure AD で作成します。

    注意

    マネージド ID のサポートは、Azure Arc 対応 Logic Apps では現在使用できません。

    Azure CLI を使用して Azure Active Directory (Azure AD) アプリの登録を作成するには、こちらの手順を実行します。

    1. az ad sp create コマンドを使用して、アプリの登録を作成します。
    2. すべての詳細を確認するには、az ad sp show コマンドを実行します。
    3. 両方のコマンドの出力から、クライアント ID、オブジェクト ID、テナント ID、およびクライアント シークレットの値を見つけて保存します。これらは、後で使用するために保持しておく必要があります。

    Azure portal を使用して Azure Active Directory (Azure AD) アプリの登録を作成するには、こちらの手順を実行します。

    1. Azure portal を使用して、新しい Azure AD アプリの登録を作成します。
    2. 作成が完了したら、ポータルで新しいアプリの登録を見つけます。
    3. 登録メニューで、 [概要] を選択し、クライアント ID、テナント ID、およびクライアント シークレットの値を保存します。
    4. オブジェクト ID を検索するには、 [ローカル ディレクトリでのマネージド アプリケーション] フィールドの横にあるアプリ登録の名前を選択します。 プロパティ ビューからオブジェクト ID をコピーします。

ロジック アプリを作成してデプロイする

Azure CLI、Visual Studio Code、Azure portal のどれを使用するかに基づいて、一致するタブを選択して、特定の前提条件と手順を確認します。

前提条件

開始する前に、お使いの環境を確認します。

  1. Azure portal にサインインします。 次のコマンドを実行して、サブスクリプションがアクティブであることを確認します。

    az login
    
  2. 次のコマンドを実行して、ターミナルまたはコマンド ウィンドウで Azure CLI のバージョンを確認します。

    az --version
    

    最新バージョンについては、最新のリリース ノートを参照してください。

  3. 最新バージョンを使用していない場合は、オペレーティング システムまたはプラットフォーム用のインストール ガイドに従ってインストールを更新します。

Logic Apps 拡張機能をインストールする

Azure CLI 用の Logic Apps 拡張機能のプレビュー バージョンをインストールします。

az extension add --yes --source "https://aka.ms/logicapp-latest-py2.py3-none-any.whl"

リソース グループの作成

ロジック アプリのリソース グループがまだない場合は、コマンド az group create を実行してグループを作成します。 ご自分のサブスクリプション名または識別子を持つ --subscription パラメーターを必ず使用してください。 たとえば、次のコマンドを実行すると、場所 eastusMyResourceGroupName という名前のリソース グループが作成されます。

az group create --name MyResourceGroupName --location eastus --subscription MySubscription

ヒント

ご自分の Azure アカウントに既定のサブスクリプションを設定している場合は、--subscription パラメーターを使用する必要はありません。 既定のサブスクリプションを設定するには、次のコマンドを実行し、MySubscription をご自分のサブスクリプション名または識別子に置き換える必要があります。 az account set --subscription MySubscription

リソース グループが正常に作成された場合、出力には、provisioningStateSucceeded として示されます。

<...>
   "name": "testResourceGroup",
   "properties": {
      "provisioningState": "Succeeded"
    },
<...>

ロジック アプリを作成する

Azure CLI を使用して Azure Arc 対応ロジック アプリを作成するには、次のようにコマンド az logicapp create を実行します。

az logicapp create --resource-group MyResourceGroupName --name MyLogicAppName 
   --storage-account MyStorageAccount --custom-location MyCustomLocation 
   --subscription MySubscription

重要

カスタムの場所および Kubernetes 環境と同じリソースの場所 (Azure リージョン) を必ず使用してください。 ロジック アプリのリソースの場所、カスタムの場所、Kubernetes 環境はすべて同じである必要があります。 この値は、カスタムの場所の "名前" と "同じではありません"。

コマンドで次の必須パラメーターを必ず指定してください。

パラメーター 説明
--name -n ロジック アプリの一意の名前。
--resource-group -g ロジック アプリの作成先となるリソース グループの名前。 使用するリソース グループがない場合は、リソース グループを作成してください。
--storage-account -s ロジック アプリで使用するストレージ アカウント。 同じリソース グループ内のストレージ アカウントの場合は、文字列値を使用します。 別のリソース グループ内のストレージ アカウントの場合は、リソース ID を使用します。

プライベート Azure Container Registry イメージを使用して Azure Arc でロジック アプリを作成するには、次のように az logicapp create を実行します。

az logicapp create --resource-group MyResourceGroupName --name MyLogicAppName 
   --storage-account MyStorageAccount --subscription MySubscription
   --custom-location MyCustomLocation 
   --deployment-container-image-name myacr.azurecr.io/myimage:tag
   --docker-registry-server-password passw0rd 
   --docker-registry-server-user MyUser

ロジック アプリの詳細を表示する

Azure Arc 対応ロジック アプリの詳細を表示するには、次のようにコマンド az logicapp show を実行します。

az logicapp show --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

ロジック アプリをデプロイする

Kudu の zip デプロイを使用してロジック アプリをデプロイするには、コマンド az logicapp deployment source config-zip を実行します。 次に例を示します。

az logicapp deployment source config-zip --name MyLogicAppName 
   --resource-group MyResourceGroupName 
   --src C:\uploads\v22.zip 
   --subscription MySubscription

ロジック アプリを起動する

Azure Arc 対応ロジック アプリを起動するには、次の必須パラメーターを指定してコマンド az logicapp start を実行します。

az logicapp start --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

ロジック アプリを停止する

Azure Arc 対応ロジック アプリを停止するには、次の必須パラメーターを指定してコマンド az logicapp stop を実行します。

az logicapp stop --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

ロジック アプリを再起動する

Azure Arc 対応ロジック アプリを再起動するには、次の必須パラメーターを指定してコマンド az logicapp restart を実行します。

az logicapp restart --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

ロジック アプリを削除する

Azure Arc 対応ロジック アプリを削除するには、次の必須パラメーターを指定してコマンド az logicapp delete を実行します。

次に例を示します。

az logicapp delete --name MyLogicAppName --resource-group MyResourceGroupName --subscription MySubscription

接続の認証を設定する

現在、Azure Arc 対応 Kubernetes クラスターでは、ロジック アプリのマネージド ID を使用したマネージド API 接続の認証はサポートされていません。 ワークフローでマネージド コネクタを使用する場合は、これらの Azure がホストするマネージド接続を作成します。

代わりに、Azure Active Directory (Azure AD) で独自のアプリの登録を作成する必要があります。 その後、このアプリの登録を、Azure Arc 対応 Logic Apps でデプロイおよび実行されているロジック アプリの ID として使用できます。 詳細については、最重要の前提条件を確認してください。

アプリの登録から、クライアント ID、オブジェクト ID、テナント ID、およびクライアント シークレットが必要です。 Visual Studio Code を使用してデプロイする場合は、Azure AD ID を使用してロジック アプリを設定するための組み込みのエクスペリエンスがあります。 詳細については、ロジック アプリ ワークフローを作成してデプロイする - Visual Studio Code に関するセクションを参照してください。

ただし、開発には Visual Studio Code を使用するが、Azure CLI または自動パイプラインを使用してデプロイする場合は、こちらの手順に従います。

プロジェクトで接続とアプリの設定を構成する

  1. ロジック アプリ プロジェクトの connections.json ファイルで、マネージド接続の authentication オブジェクトを探します。 このオブジェクトの内容を、最重要の前提条件で以前に生成した、ご自分のアプリの登録情報に置き換えます。

    "authentication": {
       "type": "ActiveDirectoryOAuth",
       "audience": "https://management.core.windows.net/",
       "credentialType": "Secret",
       "clientId": "@appsetting('WORKFLOWAPP_AAD_CLIENTID')",
       "tenant": "@appsetting('WORKFLOWAPP_AAD_TENANTID')",
       "secret": "@appsetting('WORKFLOWAPP_AAD_CLIENTSECRET')"
    } 
    
  2. ロジック アプリ プロジェクトの local.settings.json ファイルに、クライアント ID、オブジェクト ID、テナント ID、およびクライアント シークレットを追加します。 デプロイ後、これらの設定はロジック アプリの設定になります。

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "WORKFLOWAPP_AAD_CLIENTID":"<my-client-ID>",
          "WORKFLOWAPP_AAD_OBJECTID":"<my-object-ID",
          "WORKFLOWAPP_AAD_TENANTID":"<my-tenant-ID>",
          "WORKFLOWAPP_AAD_CLIENTSECRET":"<my-client-secret>"
       }
    }
    

重要

運用シナリオまたは環境では、キー コンテナーを使用するなどして、このようなシークレットや機密情報をセキュリティで保護するようにしてください。

アクセス ポリシーを追加する

シングルテナントの Azure Logic Apps では、ロジック アプリごとに ID があります。これには、Azure でホストされているマネージド接続を使用するためのアクセス許可がアクセス ポリシーによって付与されています。 これらのアクセス ポリシーは、Azure portal またはインフラストラクチャ デプロイを使用して設定できます。

ARM テンプレート

Azure Resource Manager テンプレート (ARM テンプレート) には、マネージド API 接続 "ごと" に次のリソース定義を含め、次の情報を指定します。

パラメーター 説明
<connection-name> マネージド API 接続の名前 (例: office365)
<object-ID> アプリの登録から以前に保存した Azure AD ID のオブジェクト ID
<tenant-ID> アプリの登録から以前に保存した Azure AD ID のテナント ID
{
   "type": "Microsoft.Web/connections/accessPolicies",
   "apiVersion": "2016-06-01",
   "name": "[concat('<connection-name>'),'/','<object-ID>')]",
   "location": "<location>",
   "dependsOn": [
      "[resourceId('Microsoft.Web/connections', parameters('connection_name'))]"
   ],
   "properties": {
      "principal": {
         "type": "ActiveDirectory",
         "identity": {
            "objectId": "<object-ID>",
            "tenantId": "<tenant-ID>"
         }
      }
   }
}

詳細については、Microsoft.Web/connections/accesspolicies (ARM テンプレート) のドキュメントを参照してください。

Azure portal

このタスクでは、以前に保存したクライアント ID を "アプリケーション ID" として使用します。

  1. Azure Portal で、ご利用のロジック アプリを探して選択します。 ロジック アプリのメニューの [ワークフロー] で、 [接続] を選択します。これにより、ロジック アプリのワークフロー内のすべての接続が一覧表示されます。

  2. [API 接続] で接続を選択します。この例では office365 です。

  3. 接続のメニューの [設定] で、 [アクセス ポリシー] > [追加] を選択します。

  4. [アクセス ポリシーの追加] ペインの検索ボックスで、以前に保存したクライアント ID を検索して選択します。

  5. 終了したら、 [追加] を選択します。

  6. ロジック アプリで Azure でホストされる接続ごとに、これらの手順を繰り返します。

DevOps のデプロイを自動化する

Azure Arc 対応ロジック アプリをビルドしてデプロイするために、シングルテナント ベースのロジック アプリと同じパイプラインとプロセスを使用できます。 DevOps 用のパイプラインを使用してインフラストラクチャのデプロイを自動化するには、コンテナー以外とコンテナーの両方のデプロイに対してインフラストラクチャ レベルで次の変更を行います。

標準のデプロイ (コンテナー以外)

ロジック アプリのデプロイに zip デプロイを使用する場合は、コンテナー イメージをホストするために Docker レジストリを設定する必要はありません。 Kubernetes のロジック アプリは、厳密にはコンテナーで実行されますが、これらのコンテナーは Azure Arc 対応 Logic Apps によって管理されます。 このシナリオの場合は、インフラストラクチャを設定するときに次のタスクを実行します。

  • Kubernetes でロジック アプリを作成しているリソース プロバイダーに通知します。
  • デプロイに App Service プランを含めます。 詳細については、「デプロイに App Service プランを含める」を参照してください。

Azure Resource Manager テンプレート (ARM テンプレート) に、次の値を含めます。

Item JSON プロパティ 説明
場所 location カスタムの場所および Kubernetes 環境と同じリソースの場所 (Azure リージョン) を必ず使用してください。 ロジック アプリのリソースの場所、カスタムの場所、Kubernetes 環境はすべて同じである必要があります。

: この値は、カスタムの場所の "名前" と同じではありません。

アプリの種類 kind Azure プラットフォームでアプリを識別できるようにデプロイするアプリの種類。 Azure Logic Apps の場合、この情報は次の例のようになります: kubernetes,functionapp,workflowapp,linux
拡張された場所 extendedLocation このオブジェクトでは、Kubernetes 環境に "カスタムの場所" の "name" が必要であるため、"type""CustomLocation" に設定されている必要があります。
ホスティング プランのリソース ID serverFarmId 関連付けられている App Service プランのリソース ID。これは次のような形式になります。

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

ストレージ接続文字列 AzureWebJobsStorage ストレージ アカウントの接続文字列

重要: ARM テンプレートでは、自分のストレージ アカウントの接続文字列を指定する必要があります。 運用シナリオまたは環境では、キー コンテナーを使用するなどして、このようなシークレットや機密情報をセキュリティで保護するようにしてください。

ARM テンプレート

次の例は、ARM テンプレートで使用できる Azure Arc 対応 Logic Apps リソース定義のサンプルを示しています。 詳細については、Microsoft.Web/sites template format (JSON) のドキュメントを参照してください。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": "kubernetes,functionapp,workflowapp,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "clientAffinityEnabled": false,
      "name": "[parameters('name')]",
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "Node|12"
      }
   }
}

コンテナーのデプロイ

コンテナー ツールとデプロイ プロセスを使用する場合は、ロジック アプリをコンテナー化し、Azure Arc 対応 Logic Apps にデプロイできます。 このシナリオの場合は、インフラストラクチャを設定するときに次の高度なタスクを実行します。

  • コンテナー イメージをホストするための Docker レジストリを設定します。
  • Kubernetes でロジック アプリを作成しているリソース プロバイダーに通知します。
  • デプロイ テンプレートで、デプロイを計画している Docker レジストリとコンテナー イメージをポイントします。 シングルテナントの Azure Logic Apps は、この情報を使用して、Docker レジストリからコンテナー イメージを取得します。
  • デプロイに App Service プランを含めます。 詳細については、「デプロイに App Service プランを含める」を参照してください。

Azure Resource Manager テンプレート (ARM テンプレート) に、次の値を含めます。

Item JSON プロパティ 説明
場所 location カスタムの場所および Kubernetes 環境と同じリソースの場所 (Azure リージョン) を必ず使用してください。 ロジック アプリのリソースの場所、カスタムの場所、Kubernetes 環境はすべて同じである必要があります。

: この値は、カスタムの場所の "名前" と "同じではありません"。

アプリの種類 kind Azure プラットフォームでアプリを識別できるようにデプロイするアプリの種類。 Azure Logic Apps の場合、この情報は次の例のようになります: kubernetes,functionapp,workflowapp,container
拡張された場所 extendedLocation このオブジェクトでは、Kubernetes 環境に "カスタムの場所" の "name" が必要であるため、"type""CustomLocation" に設定されている必要があります。
コンテナー名 linuxFxVersion コンテナーの名前。次のような形式になります。DOCKER\|<container-name>
ホスティング プランのリソース ID serverFarmId 関連付けられている App Service プランのリソース ID。これは次のような形式になります。

"/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}"

ストレージ接続文字列 AzureWebJobsStorage ストレージ アカウントの接続文字列

重要: Docker コンテナーにデプロイする際に、ARM テンプレートで自分のストレージ アカウントの接続文字列を指定する必要があります。 運用シナリオまたは環境では、キー コンテナーを使用するなどして、このようなシークレットや機密情報をセキュリティで保護するようにしてください。

Docker レジストリとコンテナー イメージを参照するには、こちらの値をテンプレートに含めます。

Item JSON プロパティ 説明
Docker レジストリ サーバー URL DOCKER_REGISTRY_SERVER_URL Docker レジストリ サーバーの URL
Docker レジストリ サーバー DOCKER_REGISTRY_SERVER_USERNAME Docker レジストリ サーバーにアクセスするユーザー名
Docker レジストリ サーバーのパスワード DOCKER_REGISTRY_SERVER_PASSWORD Docker レジストリ サーバーにアクセスするためのパスワード

ARM テンプレート

次の例は、ARM テンプレートで使用できる Azure Arc 対応 Logic Apps リソース定義のサンプルを示しています。 詳細については、Microsoft.Web/sites template format (ARM テンプレート) のドキュメントを参照してください。

{
   "type": "Microsoft.Web/sites",
   "apiVersion": "2020-12-01",
   "name": "[parameters('name')]",
   "location": "[parameters('location')]",
   "kind": " kubernetes,functionapp,workflowapp,container",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
    },
   "properties": {
      "name": "[parameters('name')]",
      "clientAffinityEnabled": false,
      "serverFarmId": "<hosting-plan-ID>",
      "siteConfig": {
         "appSettings": [
            {
               "name": "FUNCTIONS_EXTENSION_VERSION",
               "value": "~3"
            },
            {
               "name": "FUNCTIONS_WORKER_RUNTIME",
               "value": "node"
            },
            {
               "name": "AzureWebJobsStorage",
               "value": "<storage-connection-string>"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__id",
               "value": "Microsoft.Azure.Functions.ExtensionBundle.Workflows"
            },
            {
               "name": "AzureFunctionsJobHost__extensionBundle__version",
               "value": "[1.*, 2.0.0)"
            },
            {
               "name": "APP_KIND",
               "value": "workflowapp"
            }, 
            {
               "name": "DOCKER_REGISTRY_SERVER_URL",
               "value": "<docker-registry-server-URL>"
            },
            { 
               "name": "DOCKER_REGISTRY_SERVER_USERNAME",
               "value": "<docker-registry-server-username>"
            },
            {
               "name": "DOCKER_REGISTRY_SERVER_PASSWORD",
               "value": "<docker-registry-server-password>"
            }
         ],
         "use32BitWorkerProcess": "[parameters('use32BitWorkerProcess')]",
         "linuxFxVersion": "DOCKER|<container-name>"
      }
   }
}

デプロイに App Service プランを含める

標準またはコンテナーのいずれのデプロイの場合でも、デプロイにApp Service プランを含める必要があります。 このプランは Kubernetes 環境との関連性は低くなりますが、標準とコンテナーのどちらのデプロイにも、App Service プランが引き続き必要です。

他の作成オプションでは通常、このプラン用に Azure リソースのプロビジョニングが処理されますが、デプロイで "コードとしてのインフラストラクチャ" テンプレートを使用する場合は、プラン用に Azure リソースを明示的に作成する必要があります。 ホスティング プラン リソースは変更されず、sku の情報だけが変更されます。

Azure Resource Manager テンプレート (ARM テンプレート) に、次の値を含めます。

Item JSON プロパティ 説明
場所 location カスタムの場所および Kubernetes 環境と同じリソースの場所 (Azure リージョン) を必ず使用してください。 ロジック アプリのリソースの場所、カスタムの場所、Kubernetes 環境はすべて同じである必要があります。

: この値は、カスタムの場所の "名前" と同じではありません。

種類 kind kubernetes,linux である必要がある、デプロイされる App Service プランの種類
拡張された場所 extendedLocation このオブジェクトでは、Kubernetes 環境に "カスタムの場所" の "name" が必要であるため、"type""CustomLocation" に設定されている必要があります。
ホスティング プラン名 name App Service プランの名前
プラン レベル sku: tier App Serviceプラン レベル (K1)
プラン名 sku: name App Serviceプラン名 (Kubernetes)

ARM テンプレート

次の例は、アプリのデプロイで使用できる App Service プランのリソース定義のサンプルを示しています。 詳細については、Microsoft.Web/serverfarms template format (ARM テンプレート) のドキュメントを参照してください。

{
   "type": "Microsoft.Web/serverfarms",
   "apiVersion": "2020-12-01",
   "location": "<location>",
   "name": "<hosting-plan-name>",
   "kind": "kubernetes,linux",
   "extendedLocation": {
      "name": "[parameters('customLocationId')]",
      "type": "CustomLocation"
   },
   "sku": {
      "tier": "K1",
      "name": "Kubernetes", 
      "capacity": 1
   },
   "properties": {
      "kubeEnvironmentProfile": {
         "id": "[parameters('kubeEnvironmentId')]"
      }
   }
}

既定のスケーリング動作を変更する

Azure Arc 対応 Logic Apps では、バックエンド ストレージ キュー内の "ジョブ" の数に基づいて、ロジック アプリのスケーリングが自動的に管理されます。 ただし、この既定のスケーリング動作は変更できます。

ロジック アプリでは、ワークフロー定義によって実行するアクションのシーケンスが指定されます。 ワークフローの実行がトリガーされるたびに、Azure Logic Apps ランタイムによって、ワークフロー定義内のアクションの種類ごとに "ジョブ" が作成されます。 次に、ランタイムによってこれらのジョブが "ジョブ シーケンサー" に整理されます。 このシーケンサーによって、ワークフロー定義のジョブの実行がオーケストレーションされますが、基になる Azure Logic Apps ジョブ オーケストレーション エンジンによって各ジョブが実行されます。

ステートフル ワークフローの場合、ジョブ オーケストレーション エンジンによりストレージ キュー メッセージが使用され、ジョブ シーケンサーでジョブがスケジュールされます。 バックグラウンドでは、"ジョブ ディスパッチャー" (または "ディスパッチャー worker インスタンス") によってこれらのジョブ キューが監視されます。 オーケストレーション エンジンにより worker インスタンスの既定の最小および最大数が使用され、ジョブ キューが監視されます。 ステートレス ワークフローの場合、オーケストレーション エンジンによって、アクションの状態がメモリ内に完全に保持されます。

既定のスケーリング動作を変更するには、ジョブ キューを監視する worker インスタンスの最小および最大数に異なる値を指定します。

スケーリングを変更するための前提条件

Arc 対応 Kubernetes クラスターで、以前に作成した App Service バンドル拡張機能の keda.enabled プロパティを true に設定する必要があります。 詳細については、最重要の前提条件を確認してください。

スケーリングしきい値を変更する

Azure Arc 対応 Logic Apps では、ジョブ キューの長さによってスケール イベントがトリガーされ、ロジック アプリのスケーリング発生頻度のしきい値が設定されます。 キューの長さ (既定値は 20 ジョブに設定されています) は変更することができます。 スケーリングの頻度を低くするには、キューの長さを増やします。 スケーリングの頻度を高くするには、キューの長さを減らします。 このプロセスでは試行錯誤が必要になる場合があります。

キューの長さを変更するには、ロジック アプリ プロジェクトのルート レベルの host.json ファイルで、Runtime.ScaleMonitor.KEDA.TargetQueueLength プロパティを設定します。次に例を示します。

"extensions": {
   "workflow": {
      "settings": {
         "Runtime.ScaleMonitor.KEDA.TargetQueueLength": "10"
      }
   }
}

スループットの最大値を変更する

既存のロジック アプリ リソースで、worker インスタンスの最大数 (既定値は 2 に設定されています) を変更できます。 この値によって、ジョブ キューを監視できる worker インスタンスの数の上限を制御します。

この最大値を変更するには、Azure CLI (ロジック アプリの作成のみ) と Azure portal を使用します。

Azure CLI

新しいロジック アプリの場合は、Azure CLI コマンド az logicapp create を実行します。次に例を示します。

az logicapp create --resource-group MyResourceGroupName 
   --name MyLogicAppName --storage-account MyStorageAccount 
   --custom-location --subscription MySubscription  MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 1] [--max-worker-count 4]

インスタンスの最大数を構成するには、--settings パラメーターを使用します。

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName 
   --settings "K8SE_APP_MAX_INSTANCE_COUNT=10" 
   --subscription MySubscription

Azure portal

シングルテナント ベースのロジック アプリの設定で、こちらの手順に従って、K8SE_APP_MAX_INSTANCE_COUNT の設定値を追加または編集します。

  1. Azure portal で、シングルテナント ベースのロジック アプリを検索して開きます。

  2. ロジック アプリ メニューの [設定] で、 [構成] を選択します。

  3. [構成] ペインの [アプリケーション設定] で、新しいアプリケーション設定を追加するか、既に追加されている場合は既存の値を編集します。

    1. [新しいアプリケーション設定] を選択し、必要な最大値を指定した設定 K8SE_APP_MAX_INSTANCE_COUNT を追加します。

    2. 設定 K8SE_APP_MAX_INSTANCE_COUNT の既存の値を編集します。

  4. 完了したら、変更を保存します。

スループットの最小値を変更する

既存のロジック アプリ リソースで、worker インスタンスの最小数 (既定値は 1 に設定されています) を変更できます。 この値によって、ジョブ キューを監視できる worker インスタンスの数の下限を制御します。 高可用性またはパフォーマンスを実現するには、この値を大きくします。

この最小値を変更するには、Azure CLI または Azure portal を使用します。

Azure CLI

既存のロジック アプリ リソースの場合は、Azure CLI コマンド az logicapp scale を実行します。次に例を示します。

az logicapp scale --name MyLogicAppName --resource-group MyResourceGroupName 
   --instance-count 5 --subscription MySubscription

新しいロジック アプリの場合は、Azure CLI コマンド az logicapp create を実行します。次に例を示します。

az logicapp create --resource-group MyResourceGroupName --name MyLogicAppName 
   --storage-account MyStorageAccount --custom-location 
   --subscription MySubscription MyCustomLocation 
   [--plan MyHostingPlan] [--min-worker-count 2] [--max-worker-count 4]

Azure portal

シングルテナント ベースのロジック アプリの設定で、こちらの手順に従って [Scale Out] プロパティの値を変更します。

  1. Azure portal で、シングルテナント ベースのロジック アプリを検索して開きます。
  2. ロジック アプリのメニューの [設定] で、 [Scale Out] を選択します。
  3. [Scale Out] ペインで、最小インスタンス スライダーを目的の値にドラッグします。
  4. 完了したら、変更を保存します。

問題のトラブルシューティング

デプロイしたロジック アプリの詳細情報を取得するには、次のオプションを試してください。

アプリの設定と構成にアクセスする

アプリの設定にアクセスするには、次の Azure CLI コマンドを実行します。

az logicapp config appsettings list --name MyLogicAppName 
   --resource-group MyResourceGroupName --subscription MySubscription

アプリの設定を構成するには、次のようにコマンド az logicapp config appsettings set を実行します。 ご自分の設定の名前と値を持つ --settings パラメーターを必ず使用してください。

az logicapp config appsettings set --name MyLogicAppName 
   --resource-group MyResourceGroupName 
   --settings "MySetting=1" 
   --subscription MySubscription

アプリの設定を削除するには、次のようにコマンド az logicapp config appsettings delete を実行します。 削除する設定の名前を持つ --setting-names パラメーターを必ず使用してください。

az logicapp config appsettings delete --name MyLogicAppName 
   --resource-group MyResourceGroupName 
   --setting-names MySetting 
   --subscription MySubscription

ロジック アプリのプロパティを表示する

アプリの情報とプロパティを表示するには、次の Azure CLI コマンドを実行します。

az logicapp show --name MyLogicAppName --resource-group MyResourceGroupName --subscription MySubscription

ワークフロー アクティビティを監視する

ロジック アプリでワークフローのアクティビティを表示するには、こちらの手順を実行します。

  1. Azure portal で、デプロイされたロジック アプリを見つけて開きます。

  2. ロジック アプリのメニューで、 [ワークフロー] を選択し、ワークフローを選択します。

  3. [ワークフロー] メニューで、 [概要] を選択します。

ログの収集

ロジック アプリに関するログ データを取得するには、ロジック アプリで Application Insights を有効にします (まだ有効になっていない場合)。

次の手順