あるスタートアップが、社内向けの軽量なWebhookエンドポイントをLambdaで実装したい。API Gatewayを使わずに、Lambda関数に直接HTTPSエンドポイントを付与して外部サービスからのWebhookを受信したい。コストを最小化しつつ、最小限の構成でHTTPSエンドポイントを公開する方法として最も適切なものはどれか。
- A. Lambda関数をVPC内に配置してAWS PrivateLinkのVPCエンドポイント経由で外部サービスからアクセスする
- B. Lambda関数URLを有効化し、認証タイプをNONEまたはAWS_IAMに設定してHTTPSエンドポイントを直接公開する
- C. Application Load Balancer(ALB)をLambdaのターゲットグループに設定し、ALBのDNS名をWebhookエンドポイントとして使う
- D. API GatewayのHTTP APIをLambdaに統合し、エンドポイントURLをWebhookに登録する
解答と解説を見る
正解: B
Lambda関数URLはLambda関数に直接HTTPSエンドポイントを付与できる機能(2022年4月リリース)であり、API Gatewayや追加のコンポーネントなしに最小構成でHTTPSアクセスを実現できる。認証タイプをNONEに設定すると認証なしで公開でき、AWS_IAMに設定するとSigv4署名による認証が必要になる。コストはLambdaの実行時間のみで、API GatewayのAPIコール料金や、ALBのLCU料金が発生しないため軽量Webhookに最適である。選択肢CのALBはHTTPSエンドポイントの提供に使えるが、ALBのプロビジョニング(時間単位のロードバランサー料金+LCU料金)が発生し、「コストを最小化」という要件に反する。また、ALBはWebhookのような単純なエンドポイント公開には過剰なコンポーネントである。選択肢DのAPI GatewayのHTTP APIはLambdaとの統合が容易だが、API Gatewayのリクエスト単価が追加で発生する。Lambda関数URLと比較すると機能は豊富だが「API Gatewayを使わずに」という要件に反する。選択肢AのPrivateLinkはVPC外からのインターネット経由アクセスには使用できず、外部サービスからのWebhookを受信するための手段として成立しない。
📚 関連サービスの解説: AWS Lambda ・ AWS IAM