Compute

AWS Lambda@Edge

In-Scopeサービス表には載っているが、GenAIのFM呼び出しをここで完結させるのは構造的に無理があります。試験では「エッジで何を・何をしないか」を見分けさせる引っかけ役です。

  • B|実装まわり
  • D2 実装と統合
  • D4 運用効率と最適化

ひとことで言うと

CloudFrontのリクエスト/レスポンス経路上でNode.js・Pythonのコードを実行する仕組みです。GenAIの推論そのものをここで行う設計は成立しません。 30秒のタイムアウトとVPC非対応という制約が、FM呼び出しをエッジに置く発想をそもそも塞いでいます。

要するに、玄関先の受付です。建物(オリジン)に来客が着く前に、受付でヘッダーを確認したり、行き先を振り分けたりします。
受付は電話(ネットワーク呼び出し)を1本かけられますが、30秒しか待てません。FMへの推論リクエストのように数秒〜数十秒かかる重い用件を、受付だけで完結させる設計は無理があります。

なぜ生まれたか

GenAIアプリの多くはCloudFrontを前段に置きます。静的なフロントエンドの配信、API Gatewayへのルーティング、WAFとの連携がその理由で、Lambda@Edgeが出てくるとしたら「その経路の途中で何かを差し込みたい」場面です。ヘッダーの付与・書き換え、地域ごとのルーティング振り分け、認証トークンの検証などが典型です。

AIP-C01のIn-Scopeサービス表ではCompute区分にLambda@Edgeが載っていますが、スキル文の側にGenAI固有の用途は明記されていません。「載っているが主役として名指しされていない」サービスは、正しい使い方と誤った使い方を見分けさせる出題に回りやすい位置づけです。

GenAIアプリの経路Lambda@Edgeが差し込める場所
CloudFront → API Gateway → Bedrockリクエスト前段のヘッダー付与・認証トークン検証
CloudFront → 地域別バックエンドorigin requestでのルーティング振り分け
CloudFront → 静的フロントエンドviewer responseでのセキュリティヘッダー付与

何に使うか

用途使い方関連ドメイン
GenAIチャットUIの配信最適化静的フロントエンドをCloudFrontで配信し、ヘッダー付与・A/Bルーティングをviewer requestで行うD2
地域ごとのバックエンド振り分けorigin requestでリクエストの送り先(リージョン別APIエンドポイント)を書き換えるD4
軽量な認証・トークン検証viewer requestでトークンを検証し、不正なリクエストをFM呼び出しの前段で弾くD3
レスポンスヘッダーの付与セキュリティヘッダー・キャッシュ制御をviewer responseで付与するD4

試験でどう問われるか

問われ方正解に寄る条件引っかけの選択肢
「グローバルユーザー向けにFM推論のレイテンシを下げたい」推論はリージョンの計算資源が要る → Bedrock Cross-Region InferenceやAPI Gatewayのレイテンシ最適化で対応Lambda@Edgeでモデル呼び出し自体をエッジに置く(30秒制約・VPC非対応で成立しない)
軽量なリクエスト加工(ヘッダー付与・単純な書き換え)をどこでやるかネットワーク呼び出しが不要な軽処理 → CloudFront Functions(サブミリ秒・~2MB制約)ネットワーク呼び出しが要らない処理にわざわざLambda@Edgeを使う(オーバースペック)
認証サービスへの問い合わせを伴う検証をエッジでやりたいネットワーク呼び出しが必要 → Lambda@Edge(30秒まで)CloudFront Functionsで済ませようとする(外部ネットワーク呼び出し不可)

CloudFront Functionsとの取り違えが最大の落とし穴です。CloudFront Functionsは外部ネットワーク呼び出しができずメモリも2MBに切り詰められていますが、サブミリ秒で動きます。Lambda@Edgeはネットワーク呼び出しができる代わりに立ち上がりが重く、最大30秒までしか待てません。「ネットワーク呼び出しが要るか」が両者を分ける唯一の実務上の分岐です。

実務でどう使うか

  • デプロイリージョンはUS East(N. Virginia)固定。 関数はここに作成し、CloudFrontが世界中のエッジに複製します。他リージョンで作った通常のLambdaをそのまま流用することはできません
  • VPCアクセス不可。 VPC内のBedrockインターフェースエンドポイントやプライベートなAPIには到達できません。パブリックエンドポイント経由の呼び出しに限られます
  • 環境変数・レイヤー・コンテナイメージ・arm64・プロビジョンドコンカレンシーはすべて非対応。 通常のLambda運用でGenAIアプリ向けに整えた構成(レイヤーで依存を共有する、コンテナイメージでデプロイする等)はそのまま持ち込めません
  • origin request/response以外ではCloudFrontが追加したヘッダーが見えません。 リクエスト元の情報(国コード等)を使ってルーティングを分岐する処理は、viewer requestではなくorigin request側に置く必要があります
制約値GenAIアプリで踏みやすい場面
デプロイリージョンUS East (N. Virginia)固定他リージョンの既存Lambdaをそのまま流用しようとする
VPCアクセス非対応VPC内のBedrockインターフェースエンドポイントに到達しようとする
レスポンスサイズ40KB(viewer)/ 1MB(origin)ストリーミング応答やドキュメントをエッジ経由で返そうとする

取り違えやすいもの

迷う相手切り分けの一言
CloudFront Functions外部呼び出し不要・サブミリ秒の軽処理はCloudFront Functions。ネットワーク呼び出しが要る/30秒までの重さが要るならLambda@Edge
通常のLambda同じ実行環境ではない。VPC非対応・環境変数不可・コンテナイメージ不可など制約が大きく別物として扱う
API Gateway+Lambdaエッジでの前処理はLambda@Edge。アプリのビジネスロジック(FM呼び出し本体)はAPI Gateway+通常のLambda/Bedrockが受け持つ。役割が競合しない
Bedrock Cross-Region Inferenceどちらも「地理的な距離」を扱うが、Cross-Region Inferenceは推論そのものの配置、Lambda@Edgeはリクエストの前処理。混同すると設計が破綻する

想起チェック

Q1. 「エッジでFM推論のレイテンシを短縮したい」という要求に、Lambda@Edgeが正解にならない理由は?

30秒のタイムアウトとVPC非対応という制約があり、実質的なFM推論の実行環境として使えないためです。レイテンシ対策はBedrock Cross-Region Inferenceやリージョン側の最適化で行います。

Q2. CloudFront FunctionsとLambda@Edgeを分ける、実務上ただ一つの基準は?

外部へのネットワーク呼び出しが必要かどうかです。不要な軽処理はCloudFront Functions、認証サービスへの問い合わせなどネットワーク呼び出しを伴う処理はLambda@Edge(最大30秒)です。

出典(AWS公式)