独自のインフラストラクチャでハイブリッド デプロイ用の Standard ロジック アプリ ワークフローを作成する (プレビュー)
適用対象: Azure Logic Apps (Standard)
Note
この機能はプレビュー段階にあり、使用量に対して料金が発生し、「Microsoft Azure プレビューの使用条件に関する補足」が適用されます。
独自のインフラストラクチャを使用、制御、管理する必要があるシナリオでは、Azure Logic Apps のハイブリッド デプロイ モデルを使用して Standard ロジック アプリ ワークフローを作成できます。 このモデルでは、ローカル処理、ストレージ、ネットワーク アクセスを必要とする部分的に接続された環境用の統合ソリューションを構築およびホストする機能が提供されます。 インフラストラクチャには、オンプレミス システム、プライベート クラウド、パブリック クラウドを含めることができます。 ハイブリッド モデルでは、Standard ロジック アプリ ワークフローは、Azure Container Apps 拡張機能の一部としてオンプレミスでホストされている Azure Logic Apps ランタイムによって提供されます。
Standard ロジック アプリ ワークフローがホストされ、部分的に接続された環境で実行される場所を示すアーキテクチャの概要については、Standard ロジック アプリ用にハイブリッド デプロイのインフラストラクチャ要件を設定するに関するページを参照してください。
このハウツー ガイドでは、アプリをホストするために必要なオンプレミス リソースを設定した後、ハイブリッド デプロイ モデルを使用して Standard ロジック アプリ ワークフローを作成してデプロイする方法を示します。
制限事項
Standard ロジック アプリのハイブリッド デプロイは、Azure Arc 対応 AKS 上の Azure Container Apps と同じリージョンでのみ使用でき、サポートされます。
現在、このプレビュー リリースでは、次の機能を使用できません。
- マネージド ID の認証
- SAP 組み込みコネクタを介した SAP アクセス
- .NET Framework を使用した C# カスタム コードと、このロジック アプリのローカル関数を呼び出すという名前の組み込みアクション
- カスタム コード用の XSLT 1.0
Azure Arc 対応 Kubernetes クラスターは現在、マネージド API 接続用のマネージド ID 認証をサポートしていません。 代わりに、Microsoft Entra ID を使用して独自のアプリの登録を作成する必要があります。 詳細については、このガイドの後半の手順に従ってください。
Azure BLOB、Cosmos DB、Event Hubs などの一部の関数ベースのトリガーでは、Standard ロジック アプリに関連付けられている Azure ストレージ アカウントとの接続が必要です。 関数ベースのトリガーを使用する場合は、Azure portal の Standard ロジック アプリの環境変数、または Visual Studio Code のロジック アプリ プロジェクトの local.settings.json ファイルで、次のアプリ設定を追加し、ストレージ アカウント接続文字列を指定します。
"Values": { "name": "AzureWebJobsStorage", "value": "{storage-account-connection-string}" }
前提条件
Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。
次のオンプレミス リソース。これらはすべて、必要な接続のために同じネットワーク内に存在する必要があります。
- Azure Arc に接続された Azure Kubernetes Service クラスター
- 処理のためのワークフロー実行履歴、入力、出力をローカルに格納する SQL データベース
- ワークフローで使用される成果物をローカルに格納するためのサーバー メッセージ ブロック (SMB) ファイル共有
これらの要件を満たすために、Standard ロジック アプリのハイブリッド デプロイをサポートするようにこれらのオンプレミス リソースを設定してください。
Visual Studio Code で作業するには、関連する前提条件を備えた Visual Studio Code 用 Azure Logic Apps (Standard) 拡張機能が必要です。
ヒント
新しい Visual Studio Code のインストールがある場合は、独自のインフラストラクチャにデプロイする前に、基本的な Standard ワークフローをローカルで実行できることを確認してください。 このテスト実行は、Standard ワークフロー プロジェクトで存在する可能性があるエラーを分離するのに役立ちます。
Standard ロジック アプリを作成する
前提条件を満たしたら、次の手順に従って、ハイブリッド デプロイ用の Standard ロジック アプリを作成します。
Azure portal の検索ボックスに「ロジック アプリ」と入力し、[ロジック アプリ] を選びます。
[ロジック アプリ] ページのツール バーで [追加] を選びます。
[ロジック アプリの作成] ページの [Standard] で、[ハイブリッド] を選択します。
[Create Logic App (Hybrid)]\(ロジック アプリ (ハイブリッド) の作成\) ページで、次の情報を指定します。
プロパティ 必要 値 説明 サブスクリプション はい <Azure サブスクリプション名> Azure サブスクリプション名。
この例では、従量課金制を使用します。リソース グループ はい <Azure リソース グループ名>< ハイブリッド アプリと関連リソースを作成する Azure リソース グループ。 この名前は、リージョン間で一意である必要があり、文字、数字、ハイフン (-)、アンダースコア (_)、かっこ (())、ピリオド (.) のみを含めることができます。
この例では、Hybrid-RG という名前のリソース グループを作成します。ロジック アプリ名 はい <ロジック アプリ名> ロジック アプリの名前。リージョン間で一意である必要があり、小文字、数字、ハイフン (-) のみを含めることができます。
この例では、my-logic-app-hybrid を使用します。リージョン はい <Azure-region> Azure Arc 対応 AKS 上の Azure Container Apps 用にサポートされている Azure リージョン。
この記事では、 [米国東部] を使用します。Container App 接続環境 はい <connected-environment-name> ロジック アプリのデプロイ環境として作成した Arc 対応 Kubernetes クラスター。 詳細については、「チュートリアル: Azure Arc 対応 Kubernetes で Azure Container Apps を有効にする」を参照してください。 ストレージ設定の構成 はい [有効] または [無効] [Create Logic App (Hybrid)]\(ロジック アプリ (ハイブリッド) の作成\) ページの [ストレージ] タブに進みます。 次の例は、サンプル値が表示されている Azure portal のロジック アプリ作成ページを示しています。
[ストレージ] ページで、前に設定したストレージ プロバイダーと SMB ファイル共有に関する次の情報を指定します。
プロパティ 必要 値 説明 SQL 接続文字列 はい <sql-server-connection-string> 以前に保存した SQL Server 接続文字列。 詳細については、「SQL Server ストレージ プロバイダーの作成」を参照してください。 ホスト名 はい <file-share-host-name> SMB ファイル共有のホスト名。 ファイル共有パス はい <file-share-path> SMB ファイル共有のファイル共有パス。 ユーザー名 はい <file-share-user-name> SMB ファイル共有のユーザー名。 パスワード はい <file-share-password> SMB ファイル共有のパスワード。 終了したら、[確認と作成] を選択します。 指定した情報を確認し、[作成] を選択します。
Azure がデプロイを完了したら、[リソースに移動] を選びます。
Note
ポータルには、ハイブリッド ホスティング オプションを使用する Standard ロジック アプリに関する既知の問題がいくつか存在します。 これらのロジック アプリは、Container App ラベルと共に表示されます。これは、ワークフロー サービス プランまたは App Service Environment V3 のいずれかのホスティング オプションを使用する Standard ロジック アプリとは異なります。 詳細については、「既知の問題とトラブルシューティング - Azure portal」を参照してください。
Azure portal のリソース メニューの [ワークフロー] で、[ワークフロー] を選択します。
[ワークフロー] ページのツール バーで、[追加] を選択して、空のステートフルまたはステートレス ワークフローを追加します。
デザイナーが開いたら、トリガーとアクションを追加してワークフローを構築します。
詳細については、トリガーとアクションを使ったワークフローの構築に関する記事を参照してください。
Note
ハイブリッド ホスティング オプションを持つ Standard ロジック アプリは、子ワークフローの変更を保存するたびに、Azure Container Apps のバージョン管理の概念である新しい "リビジョン" を自動的に作成します。 このリビジョンのアクティブ化には少し時間がかかる場合があります。つまり、変更を保存した後、ワークフローをテストするまでにしばらく待つ必要があります。
変更がまだワークフローに表示されていない場合は、リビジョンが存在するかどうかを確認できます。
リソース メニューの [リビジョン] で、[リビジョンとレプリカ] を選択します。
[リビジョンとレプリカ] ページの [アクティブ リビジョン] タブで、新しいリビジョンが一覧に表示されるかどうかを確認します。
詳細については、次のリソースを参照してください。
Azure portal で CPU とメモリの割り当てを変更する
Standard ロジック アプリ リソースの CPU とメモリの設定を編集するには、次の手順に従います。
Azure portal で、Standard ロジック アプリ リソースを開きます。
リソース メニューの [設定] の下で、[コンテナー] を選択します。
[コンテナー] ページのツール バーで、[編集とデプロイ] を選択します。これにより、[コンテナーの編集] ペインが開きます。
[プロパティ] タブの [コンテナー リソースの割り当て] で、シナリオに合わせて次の値を変更します。
プロパティ 値 説明 CPU コア - 既定値: 1
- 最小: 0.25
- 最大: 2コンテナー インスタンスに割り当てる CPU コア数を決定します。 この値は、最大値まで 0.25 コアずつ増やすことができます。 このロジック アプリのすべてのコンテナー インスタンスでの合計数は、2 コアに制限されています。 メモリ - 既定値: 2
- 最小: 0.1
- 最大: 4コンテナー インスタンスに割り当てるメモリ容量をギビバイト (Gi) 単位で決定します。 この値は、最大値まで 0.1 Gi ずつ増やすことができます。 このロジック アプリのすべてのコンテナー インスタンスでの合計容量は、4 Gi に制限されています。 終了したら、 [保存] を選択します。
Azure portal でレプリカ スケーリングを変更する
トリガー イベントに応答してデプロイするレプリカの範囲の自動スケーリングを制御できます。 "レプリカ" は、ロジック アプリ リソースのリビジョンまたはバージョンの新しいインスタンスです。 この範囲の最小値と最大値を変更するには、スケール ルールを変更して、スケーリングをトリガーするイベントの種類を決定できます。 詳細については、「Azure Container Apps でスケーリング ルールを設定する」を参照してください。
Azure portal で、Standard ロジック アプリ リソースを開きます。
リソース メニューの [設定] の下で、[スケール] を選択します。
[スケール] ページの [スケール ルールの設定] で、シナリオに合わせて次の値を変更します。
プロパティ 値 説明 最小レプリカ数 - 既定値: 1
- 最小: 0
- 最大: 1000特定の時点でリビジョンに許可されるレプリカの最小数を決定します。 この値はスケール ルールをオーバーライドし、レプリカの最大数未満でなければなりません。 最大レプリカ数 - 既定値: 30
- 最小: 0
- 最大: 1000特定の時点でリビジョンに許可されるレプリカの最大数を決定します。 この値はスケール ルールをオーバーライドします。 終了したら、 [保存] を選択します。
Azure portal でロジック アプリへの受信トラフィックを制御する
イングレスを有効にすることで、ロジック アプリをパブリック Web、仮想ネットワーク、環境内の他のロジック アプリに公開できます。 Azure では、ロジック アプリへの外部トラフィックと内部トラフィックのルーティングを制御する一連の規則によってイングレス設定が適用されます。 イングレスを有効にすると、Azure Load Balancer、パブリック IP アドレス、またはその他の Azure リソースを作成しなくても、受信 HTTPS 要求または TCP トラフィックを有効にすることができます。 詳細については、「Container Apps でのイングレス」を参照してください。
Note
イングレスを有効にすると、既定ですべてのトラフィックが最新のリビジョンに送られます。 [リビジョン管理] ページに移動してトラフィックの設定を変更してください。
リソース メニューの [設定] の下で、[イングレス] を選択します。
[イングレス] ページで、[イングレス] の横にある [有効] チェックボックスを選択します。
シナリオに基づいて、残りのオプションを構成します。
詳しくは、次のドキュメントをご覧ください。
マネージド API 接続の認証を設定する
Azure Arc 対応 Kubernetes クラスターでホストされている Standard ロジック アプリ ワークフローでマネージド API 接続を認証するには、Microsoft Entra ID を使用して独自のアプリ登録を作成する必要があります。 その後、このアプリ登録の値を Standard ロジック アプリ リソースの環境変数として追加して、代わりに API 接続を認証できます。
Microsoft Entra ID でアプリ登録を作成する
Azure portal
Azure portal で、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」に従ってアプリ登録を作成します。
作成が完了したら、ポータルで新しいアプリの登録を見つけます。
リソース メニューで [概要] を選択し、後で接続認証に必要となる次の値を保存します。
- クライアント ID
- テナント ID
- クライアント シークレット
オブジェクト ID については、次の手順に従います。
[概要] ページで、次に示すように、アプリ登録の [ローカル ディレクトリでのマネージド アプリケーション] リンクを選択します。
開いたページで、[オブジェクト ID] 値をコピーして保存します。
ここで、Standard ロジック アプリ リソースに保存された値を環境変数として追加します。
Azure CLI
アプリの登録を作成するには、az ad sp create コマンドを使用します。
すべてのプロパティを確認するには、az ad sp show コマンドを使用します。
両方のコマンドからの出力で、後で接続認証に必要となる次の値を見つけて保存します。
- クライアント ID
- Object ID
- テナント ID
- クライアント シークレット
ここで、Standard ロジック アプリ リソースに保存された値を環境変数として追加します。
Standard ロジック アプリにアプリ登録の値を追加する
Azure portal で、Standard ロジック アプリ リソースにアクセスします。
リソース メニューの [設定] で、[コンテナー] を選択し、[環境変数] タブを選択します。
アプリ設定とホスト設定の詳細については、アプリ設定とホスト設定を編集するに関するページを参照してください。
ツール バーで、[編集とデプロイ] を選択します。
[コンテナーの編集] ペインで、[環境変数] を選択し、[追加] を選択します。
次の表から、指定した値と一緒に各環境変数を追加します。
環境変数 値 WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_OBJECTID <my-object-ID> WORKFLOWAPP_AAD_TENANTID <my-tenant-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret> 終了したら、 [保存] を選択します。
クライアント ID とクライアント シークレットを格納および参照する
クライアント ID とクライアント シークレットの値をシークレットとしてロジック アプリ リソースに格納し、代わりに [環境変数] タブでそれらの値を参照できます。
Azure ポータルで、ロジック アプリのリソースに移動します。
リソース メニューの [設定] の下で、[シークレット] を選択します。
ツールバーで、 追加を選択します。
[シークレットの追加] ペインで、シークレットごとに次の情報を指定し、[追加] を選択します。
Key Value WORKFLOWAPP_AAD_CLIENTID <my-client-ID> WORKFLOWAPP_AAD_CLIENTSECRET <my-client-secret>
既知の問題とトラブルシューティング
Azure portal
Standard ロジック アプリがデプロイされ、Azure Container Apps リソースとして表示されますが、種類は [Logic App (Hybrid)]\(ロジック アプリ (ハイブリッド)\) と表示されます。
Azure では、[ロジック アプリ] リソースの一覧ではなく、[コンテナー アプリ] リソースの一覧に Standard ロジック アプリが含まれています。
Azure Container Apps 接続環境では、Standard ロジック アプリは、アプリの種類がハイブリッド ロジック アプリとして一覧表示されます。
ワークフローを保存した後にデザイナーの変更を反映するには、デザイナーの更新が必要になる場合があります。
Arc 対応 Kubernetes クラスター
まれに、クラスターのメモリ占有領域が大きくなる場合があります。 この問題を回避するには、スケールアウトするか、ノード プールの自動スケーリングを追加します。
関数ホストが実行されていない
Standard ロジック アプリをデプロイしたら、アプリが正しく実行されていることを確認します。
Azure portal で、ロジック アプリのコンテナー アプリ リソースに移動します。
リソース メニューで [概要] を選択します。
[概要] ページの [アプリケーション URL] フィールドの横で、リソース URL を選択します。
アプリが正常に実行されている場合は、ブラウザー ウィンドウが開き、次のメッセージが表示されます。
そうではなく、アプリでエラーが発生している場合は、AKS ポッドが正しく実行されていることを確認します。 Windows PowerShell で、次のコマンドを実行します。
az aks get-credentials {resource-group-name} --name {aks-cluster-name} --admin 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.
ノードの数を増やし、自動スケーリングを設定するには、次の手順に従います。
Azure portal で Kubernetes サービス インスタンスに移動します。
インスタンス メニューの [設定] で、[ノード プール] を選択します。
[ノード プール] ページのツール バーで、[+ノード プールの追加] を選択します。
詳しくは、次のドキュメントをご覧ください。
- Azure Kubernetes Service (AKS) のクラスターでノード プールを作成する
- Azure Kubernetes Service (AKS) のクラスターでノード プールを管理する
- Azure Kubernetes Service (AKS) でのクラスターの自動スケーリングの概要
- Azure Kubernetes Service (AKS) でのクラスター オートスケーラーの使用
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
確認するには、Windows PowerShell で次のコマンドを実行します。
kubectl get csidrivers
表示される結果の一覧に smb.csi.k8s.io が含まれていない場合は、Windows コマンド プロンプトから次のコマンドを実行します。
helm repo add csi-driver-smb
helm repo update
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.15.0
CSI SMB ドライバー ポッドの状態を確認するには、Windows コマンド プロンプトから次のコマンドを実行します。
kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=csi-driver-smb" --watch
詳細については、「Azure Kubernetes Service (AKS) の Container Storage Interface (CSI) ドライバー」を参照してください。