独自のインフラストラクチャでハイブリッドデプロイ用の標準ロジック アプリ ワークフローを作成する

適用対象: Azure Logic Apps (Standard)

自社でインフラを使い、管理し、管理する必要がある場合は、Azure Logic Appsのハイブリッド展開モデルを使って標準ロジックアプリのワークフローを作成しましょう。 このモデルでは、ローカル処理、ストレージ、ネットワーク アクセスを必要とする部分的に接続された環境用の統合ソリューションを構築およびホストする機能が提供されます。 インフラストラクチャには、オンプレミス システム、プライベート クラウド、パブリック クラウドを含めることができます。 ハイブリッドモデルを使うことで、標準ロジックアプリのワークフローは、Azure Container Apps拡張機能の一部としてインフラストラクチャ上でホストされるAzure Logic Appsランタイムによって駆動されます。

Standard ロジック アプリ ワークフローがホストされ、部分的に接続された環境で実行される場所を示すアーキテクチャの概要については、Standard ロジック アプリ用にハイブリッド デプロイのインフラストラクチャ要件を設定するに関するページを参照してください。

このハウツーガイドでは、必要なリソースをホスティングした後、ハイブリッド展開モデルを使って標準ロジックアプリのワークフローを作成・展開する方法を示します。

Important

ローカルのAzure Logic Appsランタイムや、ローカルで利用可能な依存関係のみを使用するワークフローは、Azure接続が中断された場合でも引き続き動作できます。 Azure依存の管理、展開、監視、アイデンティティ操作、マネージドコネクタは切断中利用できないことがあります。 24時間経過するとログデータが失われることがありますが、ローカルランタイムの実行は継続されます。 詳細は「 ハイブリッド展開の制限」を参照してください。

制限事項

現在サポートされているAzureリージョン、サポートされているKubernetesクラスター、プラットフォーム全体の制限については、「ハイブリッド展開の制限」を参照してください。

ハイブリッドロジックアプリを作成・運用する際には以下の制限が適用されます:

制限事項 説明
マネージドID認証(マネージドAPI接続)に関する 現在、管理されたAPI接続はハイブリッドロジックアプリで管理されたID認証をサポートしていません。 Microsoft Entra IDを使って自分でアプリ登録を作成する必要があります。 詳細については、このガイドの後半の手順に従ってください。
関数ベースのトリガー Azure BLOB、Cosmos DB、Event Hubs などの一部の関数ベースのトリガーでは、Standard ロジック アプリに関連付けられている Azure ストレージ アカウントとの接続が必要です。 関数ベースのトリガーを使用する場合は、Azure portal または Visual Studio Code のロジック アプリ プロジェクトの local.settings.json ファイルの Standard ロジック アプリの環境変数で、 AzureWebJobsStorage という名前のアプリ設定を追加し、ストレージ アカウントの接続文字列を指定します。

"Values": {
"name": "AzureWebJobsStorage",
"value": "{storage-account-connection-string}"
}

Azure接続中断時の挙動

  • ランタイムや必要なすべてのワークフロー依存関係がローカルで利用可能であれば、ワークフローは引き続き実行される可能性があります。
  • 組み込みの操作はローカルランタイムで実行されますが、操作によって呼び出された外部サービスはアクセス可能なままでなければなりません。
  • マネージドコネクタ操作はAzureホストサービスへの接続が必要です。
  • Azureポータル管理、Azureベースのデプロイ、アイデンティティ操作、テレメトリの配信が利用不能または遅延する可能性があります。
  • ランタイムが24時間経っても切断されたままになると、この期間以降に生成されたログデータを失う可能性があります。

ワークロードが展開、監視、アラート、再提出、または長時間の切断中のアイデンティティ操作を必要とする場合は、Microsoft アカウントや製品チームであなたの特定の設定に合った挙動を検証してください。

前提条件

  • Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。

  • 以下の顧客管理リソースは、必要な接続のためにすべて同じネットワーク内に存在しなければならない:

    • Azure Arcに接続されたサポート済みKubernetesクラスタ
    • ワークフローの実行履歴、入力、出力をローカルに保存するためのSQLデータベース
    • ワークフローで使用される成果物をローカルに格納するためのサーバー メッセージ ブロック (SMB) ファイル共有

    これらの要件を満たすために、 標準ワークフローのハイブリッド展開をサポートするリソースを設置してください。

  • Visual Studio Code で作業するには、関連する前提条件を備えた Visual Studio Code 用 Azure Logic Apps (Standard) 拡張機能が必要です。

    ヒント

    新しい Visual Studio Code のインストールがある場合は、独自のインフラストラクチャにデプロイする前に、基本的な Standard ワークフローをローカルで実行できることを確認してください。 このテスト実行は、Standard ワークフロー プロジェクトで存在する可能性があるエラーを分離するのに役立ちます。

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

次の手順に従って、ハイブリッドデプロイ用の Standard ロジック アプリを作成します。

  1. Azure portal の検索ボックスに「ロジック アプリ」と入力し、[ロジック アプリ] を選びます。

  2. [ロジック アプリ] ページのツール バーで [追加] を選びます。

  3. [ロジック アプリの作成] ページの [Standard] で、[ハイブリッド] を選択します。

  4. [Create Logic App (Hybrid)]\(ロジック アプリ (ハイブリッド) の作成\) ページで、次の情報を指定します。

    プロパティ 必須 値 説明
    サブスクリプション はい < Azure サブスクリプション名> Azure サブスクリプション名。

    この例では、従量課金制を使用します。
    リソース グループ はい < Azure リソース グループ名> ハイブリッド アプリと関連リソースを作成する Azure リソース グループ。 この名前は、リージョン間で一意である必要があり、文字、数字、ハイフン (-)、アンダースコア (_)、かっこ (())、ピリオド (.) のみを含めることができます。

    この例では、Hybrid-RG という名前のリソース グループを作成します。
    ロジック アプリ名 はい < ロジック アプリ名> ロジック アプリの名前。リージョン間で一意である必要があり、小文字、数字、ハイフン (-) のみを含めることができます。

    この例では、my-logic-app-hybrid を使用します。
    リージョン はい < Azure リージョン> ハイブリッド展開をサポートするAzureリージョンです。

    この記事では、[米国東部] を使用します。
    Container App 接続環境 はい < 接続された環境名> ロジック アプリのデプロイ環境として作成した Arc 対応 Kubernetes クラスター。 詳細については、「チュートリアル: Azure Arc 対応 Kubernetes で Azure Container Apps を有効にする」を参照してください。
    ストレージ設定の構成 はい [有効] または [無効] [Create Logic App (Hybrid)]\(ロジック アプリ (ハイブリッド) の作成\) ページの [ストレージ] タブに進みます。

    次の例は、サンプル値が表示されている Azure portal のロジック アプリ作成ページを示しています。

    Azure portal とロジック アプリ作成ページを示すスクリーンショット。

  5. [ストレージ] ページで、前に設定したストレージ プロバイダーと SMB ファイル共有に関する次の情報を指定します。

    プロパティ 必須 値 説明
    SQL 接続文字列 はい < SQL-SERVER-CONNECTION-STRING> 以前に保存した SQL Server 接続文字列。 詳細については、「SQL Server ストレージ プロバイダーの作成」を参照してください。
    ホスト名 はい < ファイル共有ホスト名> SMB ファイル共有のホスト名。
    ファイル共有パス はい < ファイル共有パス> SMB ファイル共有のファイル共有パス。
    ユーザー名 はい < ファイル共有ユーザー名> SMB ファイル共有のユーザー名。
    パスワード はい < ファイルシェアパスワード> SMB ファイル共有のパスワード。
  6. 終了したら、[確認と作成] を選択します。 指定した情報を確認し、[作成] を選択します。

  7. Azure がデプロイを完了したら、[リソースに移動] を選びます。

    Azure portal でロジック アプリ リソースが開きます。次に例を示します。

    コンテナー アプリとして作成されたハイブリッド デプロイ用の Standard ロジック アプリを表示する Azure portal を示すスクリーンショット。

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

  9. [ワークフロー] ページのツール バーで、[追加] を選択して、空のステートフルまたはステートレス ワークフローを追加します。

  10. デザイナーが開いたら、トリガーとアクションを追加してワークフローを構築します。

    詳細については、トリガーとアクションを使ったワークフローの構築に関する記事を参照してください。

ハイブリッド展開のバージョン管理

ハイブリッド ホスティング オプションを持つ Standard ロジック アプリは、子ワークフローの変更を保存するたびに、Azure Container Apps のバージョン管理の概念である新しい "リビジョン" を自動的に作成します。 このリビジョンのアクティブ化には少し時間がかかる場合があります。つまり、変更を保存した後、ワークフローをテストするまでにしばらく待つ必要があります。

変更がまだワークフローに表示されていない場合は、リビジョンが存在するかどうかを確認できます。

  1. Azure portal でリソースを開きます。 リソース メニューの [リビジョン] で、[リビジョンとレプリカ] を選択します。

  2. [リビジョンとレプリカ] ページの [アクティブ リビジョン] タブで、新しいリビジョンが一覧に表示されるかどうかを確認します。

詳細については、次のリソースを参照してください。

パフォーマンス監視用に拡張テレメトリまたは OpenTelemetry を設定する

標準ロジック アプリの Application Insights で拡張テレメトリ収集を設定し、ワークフローの実行が完了した後に収集されたデータを表示できます。 この機能を使用すると、ワークフローに関する分析情報を簡単に取得でき、データ ソースでのイベントのフィルター処理をより細かく制御でき、ストレージ コストの削減に役立ちます。 これらの機能強化は、システムの正常性と動作に関する分析情報を提供するリアルタイムのパフォーマンス メトリックに焦点を当てています。

部分的に接続されたオンプレミスのシナリオでは、特定の環境に対して定義した OpenTelemetry でサポートされる アプリ設定に基づいてテレメトリを出力するように Standard ロジック アプリを設定できます。 既定では、このテレメトリ データは Application Insights に送信されます。 詳細については、「 Azure Logic Apps の標準ワークフローの Application Insights で拡張テレメトリを有効にする」を参照してください。

Application InsightsはAzure接続が必要です。 接続中断時にはテレメトリの配信に遅延が生じたり、24時間後に生成されたログデータを失うこともあります。 使用するテレメトリの目的地や設定に対して、ローカル監視やアラートの要件を検証してください。

Azure portal で vCPU とメモリの割り当てを変更する

Standard ロジック アプリ リソースの vCPU とメモリの設定を編集できます。 これらの変更は、Standard ロジック アプリワークロードの 課金料金 に影響します。

  1. Azure portal で、Standard ロジック アプリ リソースを開きます。

  2. リソース メニューの [設定] の下で、[コンテナー] を選択します。

  3. [コンテナー] ページのツール バーで、[編集とデプロイ] を選択します。これにより、[コンテナーの編集] ペインが開きます。

  4. [プロパティ] タブの [コンテナー リソースの割り当て] で、シナリオに合わせて次の値を変更します。

    プロパティ 値 説明
    CPU コア - 既定値: 1
    - 最小: 0.25
    - 最大: 2
    コンテナー インスタンスに割り当てる vCPU コアを決定します。 この値は、最大値まで 0.25 コアずつ増やすことができます。 このロジック アプリのすべてのコンテナー インスタンスでの合計数は、2 コアに制限されています。
    [メモリ] - 既定値: 2
    - 最小: 0.1
    - 最大: 4
    コンテナー インスタンスに割り当てるメモリ容量をギビバイト (GiB) 単位で決定します。 この値は、最大値まで 0.1 GiB 増やすことができます。 このロジック アプリのすべてのコンテナー インスタンスの合計容量は、4 GiB に制限されています。
  5. 終了したら、[保存] を選択します。

Azure portal でレプリカ スケーリングを変更する

トリガー イベントに応答してデプロイするレプリカの範囲の自動スケーリングを制御できます。 "レプリカ" は、ロジック アプリ リソースのリビジョンまたはバージョンの新しいインスタンスです。 この範囲の最小値と最大値を変更するには、スケール ルールを変更して、スケーリングをトリガーするイベントの種類を決定できます。 詳細については、「Azure Container Apps でスケーリング ルールを設定する」を参照してください。

  1. Azure portal で、Standard ロジック アプリ リソースを開きます。

  2. リソース メニューの [設定] の下で、[スケール] を選択します。

  3. [スケール] ページの [スケール ルールの設定] で、シナリオに合わせて次の値を変更します。

    プロパティ 値 説明
    最小レプリカ数 - 既定値: 1
    - 最小: 0
    - 最大: 1000
    特定の時点でリビジョンに許可されるレプリカの最小数を決定します。 この値はスケール ルールをオーバーライドし、レプリカの最大数未満でなければなりません。
    最大レプリカ数 - 既定値: 30
    - 最小: 0
    - 最大: 1000
    特定の時点でリビジョンに許可されるレプリカの最大数を決定します。 この値はスケール ルールをオーバーライドします。
  4. 終了したら、[保存] を選択します。

Azure portal でロジック アプリへの受信トラフィックを制御する

イングレスを有効にすることで、ロジック アプリをパブリック Web、仮想ネットワーク、環境内の他のロジック アプリに公開できます。 Azure では、ロジック アプリへの外部トラフィックと内部トラフィックのルーティングを制御する一連の規則によってイングレス設定が適用されます。 イングレスを有効にすると、Azure Load Balancer、パブリック IP アドレス、またはその他の Azure リソースを作成しなくても、受信 HTTPS 要求または TCP トラフィックを有効にすることができます。 詳細については、「Container Apps でのイングレス」を参照してください。

注

イングレスを有効にすると、既定ですべてのトラフィックが最新のリビジョンに送られます。 [リビジョン管理] ページに移動してトラフィックの設定を変更してください。

  1. リソース メニューの [設定] の下で、[イングレス] を選択します。

  2. [イングレス] ページで、[イングレス] の横にある [有効] チェックボックスを選択します。

  3. シナリオに基づいて、残りのオプションを構成します。

    詳しくは、次のドキュメントをご覧ください。

マネージド API 接続の認証を設定する

現在、管理型API接続はハイブリッドロジックアプリでマネージドID認証をサポートしていません。 これらの接続を認証するには、Microsoft Entra IDを使って独自のアプリ登録を作成する必要があります。 その後、このアプリの登録値をStandardロジックアプリのリソースに環境変数として追加できます。 この認証モデルはMicrosoft Entra IDへの接続を必要とします。

Microsoft Entra ID でアプリ登録を作成する

Azure portal

  1. Azure portal で、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」に従ってアプリ登録を作成します。

  2. 作成が完了したら、ポータルで新しいアプリの登録を見つけます。

  3. リソース メニューで [概要] を選択し、後で接続認証に必要となる次の値を保存します。

    • クライアント ID
    • テナント ID
  4. リソースサイドバーで、 Certificates & secrets>Client secrets>New client secretを選択します。

  5. クライアントの秘密を作成し、すぐにその 秘密の値を保存します。 ページを離れた後は、その値は再び表示されません。

  6. オブジェクト ID については、次の手順に従います。

    1. [概要] ページで、次に示すように、アプリ登録の [ローカル ディレクトリでのマネージド アプリケーション] リンクを選択します。

      ローカル ディレクトリでのマネージド アプリケーションのリンクが選択されたアプリの登録を示すスクリーンショット。

    2. 開いたページで、[オブジェクト ID] 値をコピーして保存します。

      オブジェクト ID が選択されたアプリの登録を示すスクリーンショット。

  7. ここで、Standard ロジック アプリ リソースに保存された値を環境変数として追加します。

Azure CLI

  1. Azureロールを割り当てずにアプリ登録とそのサービスプリンシパルを作成するには、以下のコマンドを実行します:

    az ad sp create-for-rbac \
       --name <app-registration-name> \
       --skip-assignment
    
  2. コマンド出力から、 appId、 password、 tenant の値をクライアントID、クライアントシークレット、テナントIDの値として保存します。 クライアントの秘密はコマンド出力にのみ現れます。

  3. サービス プリンシパル オブジェクト ID を取得します。

    az ad sp show \
       --id <client-ID> \
       --query id \
       --output tsv
    
  4. ここで、Standard ロジック アプリ リソースに保存された値を環境変数として追加します。

詳細については、以下を参照してください:

Standard ロジック アプリにアプリ登録の値を追加する

  1. Azure portal で、Standard ロジック アプリ リソースにアクセスします。

  2. リソース メニューの [設定] で、[コンテナー] を選択し、[環境変数] タブを選択します。

    アプリ設定とホスト設定の詳細については、アプリ設定とホスト設定を編集するに関するページを参照してください。

  3. ツール バーで、[編集とデプロイ] を選択します。

  4. [コンテナーの編集] ペインで、[環境変数] を選択し、[追加] を選択します。

  5. 次の表から、指定した値と一緒に各環境変数を追加します。

    環境変数 値
    WORKFLOWAPP_AAD_CLIENTID < my-client-ID>
    WORKFLOWAPP_AAD_OBJECTID < my-object-ID>
    WORKFLOWAPP_AAD_TENANTID < マイテナントID>
  6. 終了したら、[保存] を選択します。

クライアントの秘密を保存し参照する

クライアントシークレットをLogicアプリのリソースにシークレットとして保存してください。 WORKFLOWAPP_AAD_CLIENTSECRET環境変数の秘密を参照してください。

Important

有効期限が切れる前にシークレットをローテーションします。

  1. Azure portal で、ロジック アプリ リソースに移動します。

  2. Logicアプリのサイドバーで設定の「秘密」を選択してください。

  3. ツールバーの [追加] を選択します。

  4. [シークレットの追加]ペインで以下の情報を入力し、その後、追加 を選択します。

    鍵 値
    WORKFLOWAPP_AAD_CLIENTSECRET < マイクライアントシークレット>
  5. Logicアプリのサイドバーで設定の 中で 「コンテナ」を選択し、「 環境変数」 タブを選択します。

  6. ツール バーで、[編集とデプロイ] を選択します。

  7. WORKFLOWAPP_AAD_CLIENTSECRET環境変数を追加し、シークレットを参照するオプションを選択し、作成したシークレットを選択します。

  8. 終了したら、[保存] を選択します。

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

次のセクションでは、現在既知の問題と、一般的な問題のトラブルシューティングに関するガイダンスについて説明します。

環境のセットアップまたはポータルのデプロイに関する一般的な問題

環境の構成またはポータルのデプロイエラーに関する問題の診断とデバッグに役立つよう、ハイブリッド展開オプションに用意されている troubleshoot.ps1 PowerShell スクリプトを実行してみてください。

  1. Azure Logic Apps GitHub リポジトリ (scripts/hybrid フォルダー) に移動します。

  2. troubleshoot.ps1 ファイルを、ロジック アプリのデプロイと同じオンプレミスの場所にあるフォルダーにコピーします。

  3. PowerShell を使用してスクリプトを実行します。

Arc 対応 Kubernetes クラスター

まれに、クラスターのメモリ占有領域が大きくなる場合があります。 この問題を回避するには、スケールアウトするか、ノード プールの自動スケーリングを追加します。

関数ホストが実行されていない

Standard ロジック アプリをデプロイしたら、アプリが正しく実行されていることを確認します。

  1. Azure portal で、ロジック アプリ リソースを開きます。

  2. リソース メニューで [概要] を選択します。

  3. [概要] ページの [アプリケーション URL] フィールドの横で、リソース URL を選択します。

    アプリが正常に実行されている場合は、ブラウザー ウィンドウが開き、次のメッセージが表示されます。

    Web サイトとして実行されているブラウザーとロジック アプリを示すスクリーンショット。

    それ以外で、アプリに障害があれば、Kubernetesポッドが正しく動作しているか確認してください。 kubectlクラスタのコンテキストを使用していることを確認してください。その後、以下のコマンドを実行します。

    kubectl get ns
    kubectl get pods -n logicapps-aca-ns
    kubectl describe pod {logic-app-pod-name} -n logicapps-aca-ns 
    

    詳しくは、次のドキュメントをご覧ください。

クラスターには十分な容量がありません

前のコマンドを実行したときに、次の例のような警告が表示された場合、クラスターには処理に十分なノードがありません。

Warning: FailedScheduling  4m52s (x29 over 46m)  default-scheduler  0/2 nodes are available: 2 Too many pods. preemption: 0/2 nodes are available: 2 No preemption victims found for incoming pod.

AKSの場合はノード数を増やし、以下の手順に従ってオートスケールを設定します。

  1. Azure portal で Kubernetes サービス インスタンスに移動します。

  2. インスタンス メニューの [設定] で、[ノード プール] を選択します。

  3. [ノード プール] ページのツール バーで、[+ノード プールの追加] を選択します。

詳しくは、次のドキュメントをご覧ください。

OpenShiftやRKE2の場合は、Kubernetesディストリビューションで対応されている手順を使って容量を追加してください。

SMB Container Storage Interface (CSI) ドライバーがインストールされていない

前の kubectl describe pod コマンドを実行した後、次の警告が表示されたら、SMB ファイル共有の CSI ドライバーが正しくインストールされているかどうかを確認します。

Warning FailedScheduling 5m16s (x2 over 5m27s)  default-scheduler 0/14 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/14 nodes are available: 14 Preemption is not helpful for scheduling.

Normal NotTriggerScaleUp 9m49s (x31 over 14m) cluster-autoscaler pod didn't trigger scale-up: 3 pod has unbound immediate PersistentVolumeClaims

確認するために、次のコマンドを実行します:

kubectl get csidrivers

もし結果に smb.csi.k8s.io が含まれていなければ、ディストリビューション固有の手順に従って SMBドライバーをインストールしてください。

CSI SMBドライバーポッドの状態を確認するには、以下のコマンドを実行します。

kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=csi-driver-smb" --watch