高可用性、一貫性のあるパフォーマンス、動的スケールを目的として設計された Azure イベント ルーティング サービス。
Hi @五味 久和 •
Microsoft Q&A にお問い合わせいただきありがとうございます。
ファイルが到着したらすぐに確認応答するように、Event Grid関数を構成する必要があります。
Event Gridトリガー関数で、ファイルがBLOBに格納されたらすぐに
イベントをすぐに検証する
BLOBのURLとメタデータを抽出する
メッセージを永続キュー(Azure Storage QueueまたはService Bus)にエンキューする
HTTP 200 OKをすぐに(数秒以内に)返す
これにより、Event Gridの30秒応答要件が満たされます。
ワーカー関数(キュートリガー)
メッセージを取得し、次の処理を実行します。
BLOBをダウンロード/編集する
ADLS Gen2にコピーし、再試行とべき等性を処理する イベントを即座に確認応答する例を以下に示します。
[FunctionName("EventGridHandler")]
public async Task<IActionResult> Run(
[EventGridTrigger] EventGridEvent eventGridEvent,
[Queue("file-work-items")] IAsyncCollector<string> queueCollector,
ILogger log)
{
var blobUrl = eventGridEvent.Data.ToString();
await queueCollector.AddAsync(blobUrl);
return new OkResult return new OkResult(); // 直ちに確認応答
Event Gridの再試行が無効になっている場合(最大試行回数 = 1)の影響
イベントの損失:一時的な障害またはコールドスタートが発生すると、イベントは永久に失われます。
自動回復なし:障害はご自身で処理する必要があります。
監視が重要になります:成功/失敗の追跡はログに依存します。
DLQが必要:デッドレターキューがないと、失敗したイベントは消えてしまいます。
実施した対策
失敗したイベントをキャプチャするために、デッドレターキューを有効にします。
再生中の重複を回避するために、イベントIDとBLOB ETagを使用してべき等性を追加します。
Application InsightsまたはLog Analyticsで監視とアラートを設定します。
デッドレターキューイベントの再生戦略を計画します。
コールドスタートのリスクを軽減するために、Premium/Flexプランを使用します。