あるeコマース企業がCloudFrontを使用してWebアプリケーションを配信しています。以下の2つのエッジ処理要件があります。 ①ビューワーリクエスト時にURLパスをリライト(書き換え)してS3オリジンへルーティングしたい(処理はシンプルで1ミリ秒以下の超低レイテンシーが必要)。 ②オリジンレスポンス時にDBルックアップを伴うパーソナライズ処理を行いカスタムHTTPヘッダーを付加したい。 この2つの要件を最も効率的に満たすCloudFrontのエッジ処理の組み合わせはどれですか?
CloudFront Functionsはビューワーリクエスト/レスポンスイベントのみをサポートし、実行時間が1ms以内でサブミリ秒レイテンシーを実現します。URLリライト等の軽量処理に最適ですが、外部ネットワーク呼び出しやDBアクセスはできません。Lambda@Edgeはオリジンリクエストやオリジンレスポンスイベントをサポートし、最大30秒の実行時間でDBルックアップや外部API呼び出し等の複雑な処理が可能です。 選択肢Aは①にもLambda@Edgeを使うことは技術的に可能ですが、単純なURLリライトにはLambda@Edgeのコストとレイテンシオーバーヘッドが不要であり非効率です。 選択肢BはCloudFront Functionsがオリジンレスポンスイベントをサポートしないため②の要件を満たせません。 選択肢Dのオリジンリクエストポリシーはヘッダー・クッキー・クエリ文字列の転送制御に使うものでURLリライトはできず、API GatewayのカスタムオーソライザーはHTTPヘッダー付加によるパーソナライズ処理のオリジンとしては適していません。 ①にFunctions、 ②にLambda@Edgeを使い分けるCが最も効率的です。