イベントドリブンのサーバーレス コンピューティング プラットフォームを提供する Azure サービス。
やあ、大輔、
あなたは「Function → App Service API→ブロブ→イベント」の流れを完全にMicrosoftバックボーン上で(公開インターネットホップなし)にまとめようとしているようですね。標準として、Event Gridは公開ルーティング可能なWebhookエンドポイントにのみ配信されるため、現在プライベートエンドポイントでロックダウンされているFunction AppにEvent Gridのサブスクリプションを向けることはできません。完全にプライベートなフローを実現するためのいくつかのパターンをご紹介します:
- イベントグリッドを組み込みのBlobトリガーに切り替える
- Azure Functionsのblobトリガーはストレージアカウントを直接ポーリングします。
- ストレージアカウントにプライベートエンドポイントを設定し、そのエンドポイントにAzureWebJobsStorageを割り当てることができます。
- あなたの機能は(プレミアムプラン/VNet連携を通じて)VNetに残ることができ、すべての読み取りがネット上に行われます。
- 一度トリガーされると、関数はApp Service APIを呼び出します(プライベートエンドポイントでフロントにしたり、同じVNetに統合したりも可能です)。
- Event Gridを使い続けつつ、VNetにキューやトピックを配置してください
- Azure Service Busの名前空間(現在サポートされているもの)に公開されるEvent Gridサブスクリプションを作成しましょう。
- サービスバスの名前空間にプライベートエンドポイントを置き、バスがVNet内に存在するようにしてください。
- イベントグリッドの代わりにサービスバストリガーを使う関数に変更してください。
- イベントグリッド→サービスバス→関数フロー→ブローはプライベートネットワークから離れません。
- App Service Environment(ASE)またはPremium v3 with Private Endpoints(プレビュー版)への移行
- ASEや一部のプレミアムSKUは、VNetのフロント・トゥ・バックでファンクションアプリをホストできます。
- Event GridのサブスクリプションをプライベートのApp-in-ASEエンドポイントに直接バインドすることも可能です。(注:執筆時点では、Event Gridのプライベートエンドポイントサポートはまだプレビュー段階です。)
おすすめ:
最もシンプルなプライベートパスだけを望むなら、ブロブトリガーパターン(イベントグリッドを完全にスキップ)を使ってください:
- 関数をブロブトリガーに変換する
- Storage Account Private Endpoint を有効化し、AZUREWebJobsStorage を指向する
- VNet連携付きプレミアムプランでの関数展開
- App Service APIを独自のプライベートエンドポイント(または同じASE)でロックする方法
そうすることで、Blob検出とFunction RuntimeはどちらもStorageとプライベートに通信し、FunctionはAPIをプライベートに呼び出します。
参考になれば幸いです!
参考文献
- Java 用のBlobトリガー
- アイデンティティベースの接続とプライベートエンドポイント
注:このコンテンツはAIシステムの助けを借りて作成されました。