イベントドリブンのサーバーレス コンピューティング プラットフォームを提供する Azure サービス。
こんにちは、 @原田 駿 ,
お話をまとめると「Event Grid トリガーのある関数アプリをプライベートエンドポイント(PEP)経由で呼びたいけど、イベントサブスクリプション作成時にプライベート経路の選択肢が出ず、パブリック制限をオフにすると呼び出せない」ということですね。
現状のポイントは以下のとおりです。
- Azure Event Grid トリガーは、Event Grid サービス側が関数アプリのエンドポイント(HTTP)をコールしてイベントを配信します。
- 関数アプリのプライベートエンドポイントを作成していても、Event Grid サービスはプライベートDNS や VNet 内の PEP を経由して呼び出せず、パブリック経路での配信を前提にしています。
- そのため、関数アプリの「パブリックアクセスをオフ」にすると、Event Grid がそもそも到達できなくなり失敗します。
回避策/推奨パターン
- 関数アプリのファイアウォール設定で Azure.EventGrid のサービスタグのみ許可する → “最小限の公開” のままEvent Gridトリガーを使えます。
- さらにアクセス制御を強化したい場合 • API Management や Application Gateway をプライベート送信側に置き、バックエンドとして関数アプリを設定 • HTTP トリガー+Webhook 型で Microsoft Entra ID 認証を組み合わせ などのアーキテクチャパターンがあります。
注意点/将来性
- 製品ロードマップ上、標準的な Function App + PEP で Event Grid トリガーを完結させるサポートは現状ありません。
- ILB App Service Environment (ASEv2/v3) 上の関数アプリであれば、VNet 内完結の Event Grid トリガーが検討できるケースがあります。
参考ドキュメント
こんな形で Azure.EventGrid サービスタグ許可&必要に応じて API 管理レイヤーを挟む設計をご検討ください。
何か追加でご不明点があればお気軽にどうぞ!