次の方法で共有


シングルテナントの Standard ロジック アプリをプライベート エンドポイントを使用してプライベート ストレージ アカウントにデプロイする

適用対象: Azure Logic Apps (Standard)

シングルテナントの Standard ロジック アプリ リソースを作成する場合は、ロジック アプリのアーティファクトを格納するためのストレージ アカウントが必要です。 このストレージ アカウントへのアクセスを制限して、仮想ネットワーク内のリソースのみがロジック アプリ ワークフローに接続できるようにすることができます。 Azure Storage は、ストレージ アカウントへのプライベート エンドポイントの追加をサポートしています。

この記事では、保護されたプライベート ストレージ アカウントにこのようなロジック アプリをデプロイする手順について説明します。

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

Azure portal または Visual Studio Code を使用してデプロイする

このデプロイ方法では、ストレージ アカウントへの一時的なパブリック アクセスが必要です。 組織のポリシーが原因でパブリック アクセスを有効にできない場合でも、プライベート ストレージ アカウントにロジック アプリをデプロイできます。 ただし、Azure Resource Manager テンプレート (ARM テンプレート) を使用してデプロイする必要があります。これについては、後のセクションで説明します。

Note

前のルールの例外として、ストレージ アカウントがプライベート エンドポイントで保護されている場合でも、Azure portal を使用してロジック アプリを App Service Environment にデプロイできます。 ただし、App Service Environment で使用されるサブネットと、ストレージ アカウントのプライベート エンドポイントで使用されるサブネットとの間に接続性が必要になります。

  1. テーブル、キュー、BLOB、ファイル ストレージ サービスごとに異なるプライベート エンドポイントを作成します。

  2. ロジック アプリをデプロイするときに、ストレージ アカウントで一時的なパブリック アクセスを有効にします。

    1. Azure portal でストレージ アカウント リソースを開きます。

    2. ストレージ アカウント リソース メニューの [セキュリティとネットワーク] で、 [ネットワーク] を選択します。

    3. [ネットワーク] ペインの [ファイアウォールと仮想ネットワーク] タブにある [許可するアクセス元:] で、 [すべてのネットワーク] を選択します。

  3. Azure portal または Visual Studio Code のいずれかを使用して、ロジック アプリ リソースをデプロイします。

  4. デプロイが完了したら、ロジック アプリと、ストレージ アカウントに接続された仮想ネットワーク上のプライベート エンドポイントとの間の仮想ネットワーク統合を有効にします。

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

    2. ロジック アプリ リソース メニューの [設定] で、 [ネットワーク] を選択します。

    3. [送信トラフィックの構成] セクションで、[仮想ネットワーク統合] の横にある [未構成] を選択し、[仮想ネットワーク統合の追加] を選択します。

    4. [仮想ネットワーク統合の追加] ペインが開いたら、使用する Azure サブスクリプションと仮想ネットワークを選択します。

    5. [サブネット] リストから、ロジック アプリを追加するサブネットを選択します。 完了したら、[接続] を選択します。

  5. 仮想ネットワークを介してロジック アプリ ワークフロー データにアクセスするには、次の手順に従います。

    1. ロジック アプリ リソースのメニューで、[設定] の下にある [環境変数] を選択しますます。

    2. [アプリ設定] タブで、[WEBSITE_CONTENTOVERVNET] アプリ設定を追加し (存在しない場合)、その値を 1 に設定します。

    3. 仮想ネットワークで独自のドメイン ネーム サーバー (DNS) を使用する場合は、WEBSITE_DNS_SERVER アプリ設定を追加し (存在しない場合)、その値を DNS の IP アドレスに設定します。 セカンダリ DNS がある場合は、WEBSITE_DNS_ALT_SERVER という名前の別のアプリ設定を追加し、その値をセカンダリ DNS の IP に設定します。

  6. これらのアプリ設定を適用した後に、ストレージ アカウントからパブリック アクセスを削除できます。

    1. Azure portal でストレージ アカウント リソースを開きます。

    2. ストレージ アカウント リソース メニューの [セキュリティとネットワーク] で、 [ネットワーク] を選択します。

    3. [ネットワーク] ペインの [ファイアウォールと仮想ネットワーク] タブにある [許可するアクセス元] で、[選択されたネットワーク] をオフにし、必要に応じて仮想ネットワークを追加します。

    Note

    パブリック エンドポイントとプライベート エンドポイント間の接続の切り替えに時間がかかる可能性があるため、ロジック アプリの中断が発生する可能性があります。 この中断により、ワークフローが一時的に表示されなくなる可能性があります。 この動作が発生した場合は、ロジック アプリを再起動して数分待機し、ワークフローの再読み込みを試みることができます。

Azure Resource Manager テンプレートを使用してデプロイする

このデプロイ方法では、ストレージ アカウントへのパブリック アクセスは必要ありません。 ARM テンプレートの例については、セキュリティで保護されたストレージ アカウントとプライベート エンドポイントを使用してロジック アプリをデプロイする方法に関するページを参照してください。 このテンプレートの例では、次のリソースを作成します。

  • パブリック トラフィックを拒否するストレージ アカウント
  • Azure 仮想ネットワークとサブネット
  • Blob、File、Queue、および Table service のプライベート DNS ゾーンとプライベート エンドポイント
  • Azure Logic Apps ランタイムのディレクトリとファイルのファイル共有。 詳細については、シングルテナントの Azure Logic Apps でのロジック アプリのホストとアプリの設定に関するページを参照してください。
  • Standard ロジック アプリ リソースをホストするための App Service プラン (Workflow Standard WS1)
  • 仮想ネットワーク統合を使用するように設定されたネットワーク構成を持つ Standard ロジック アプリ リソース。 この構成により、ロジック アプリはプライベート エンドポイント経由でストレージ アカウントにアクセスできるようになります。

一般的なエラーのトラブルシューティング

通常、次のエラーは、ファイアウォールの内側にあるプライベート ストレージ アカウントで発生し、ロジック アプリがストレージ アカウント サービスにアクセスできないことを示します。

問題 エラー
host.json ファイルへのアクセスが拒否されました "System.Private.CoreLib: Access to the path 'C:\\home\\site\\wwwroot\\host.json' is denied."
ロジック アプリ リソースにワークフローを読み込めません "Encountered an error (ServiceUnavailable) from host runtime."

これらのエラーが発生したときにロジック アプリが実行されていないため、Azure プラットフォームで Kudu コンソール デバッグ サービスを使用して、これらのエラーのトラブルシューティングを行うことはできません。 ただし、代わりに次の方法を使用できます。

  • ロジック アプリに統合されているのと同じ仮想ネットワーク内の別のサブネット内に Azure 仮想マシン (VM) を作成します。 VM からストレージ アカウントへの接続を試みます。

  • Storage Explorer ツールを使用して、ストレージ アカウント サービスへのアクセスを確認します。

    このツールを使用して接続の問題が見つかった場合は、次の手順に進みます。

    1. コマンド プロンプトで nslookup を実行して、ストレージ サービスが仮想ネットワークのプライベート IP アドレスに解決されるかどうかを確認します。

      C:\>nslookup {storage-account-host-name} [optional-DNS-server]

    2. すべてのストレージ サービスを確認します。

      C:\nslookup {storage-account-host-name}.blob.core.windows.net

      C:\nslookup {storage-account-host-name}.file.core.windows.net

      C:\nslookup {storage-account-host-name}.queue.core.windows.net

      C:\nslookup {storage-account-host-name}.table.core.windows.net

    3. これらの DNS クエリが解決された場合は、psping または tcpping を実行して、ポート 443 でストレージ アカウントへのトラフィックを確認します。

      C:\psping {storage-account-host-name} {port} [optional-DNS-server]

    4. すべてのストレージ サービスを確認します。

      C:\psping {storage-account-host-name}.blob.core.windows.net:443

      C:\psping {storage-account-host-name}.queue.core.windows.net:443

      C:\psping {storage-account-host-name}.table.core.windows.net:443

      C:\psping {storage-account-host-name}.file.core.windows.net:443

    5. クエリによって VM から解決された場合は、次の手順に進みます。

      1. VM で、解決に使用する DNS サーバーを見つけます。

      2. ロジック アプリで、WEBSITE_DNS_SERVER アプリ設定を見つけて、前の手順で見つけたのと同じ DNS サーバーの値に設定します。

      3. 仮想ネットワーク統合が、ロジック アプリ内の適切な仮想ネットワークおよびサブネットを使用して正しく設定されていることを確認します。

次の手順