Lambda の VPC 設定とネットワーク構成完全ガイド(Hyperplane ENI・NAT・サブネット設計)

Lambda を VPC に接続する仕組みを Hyperplane ENI・サブネット選択・セキュリティグループ・NAT Gateway 経由の外部通信まで体系的に解説。コールドスタートへの影響、最低 2 AZ 設計、VPC Endpoint との使い分け、IAM 権限まで実務と試験の両面で押さえる。

Lambda は本来「VPC の外」で動くサーバーレス。VPC 内のリソース(RDS・ElastiCache・社内 API)にアクセスしたいときだけ、Hyperplane ENI を介して VPC に「片足を入れる」構成を取る。


1. 概要(端的に)

Lambda は既定では AWS が管理する VPC の外 で実行され、その状態でもインターネット越しのパブリック API(S3 / DynamoDB / 外部サービス)には自由にアクセスできる。一方で **VPC 内のプライベートリソース(RDS・ElastiCache・オンプレ VPN 経由のサーバー)**に到達するには、Lambda 関数を VPC に「アタッチ」する必要がある。

このアタッチを支える仕組みが Hyperplane ENI(マネージドな共有 ENI)。2019 年のアーキテクチャ刷新により、ENI は関数の 作成・VPC 設定更新のタイミングで前もって生成され、コールドスタート時にネットワーク準備で待たされる旧来の問題は解消された。


2. 何ができるか

Lambda を VPC に接続すると、以下のような VPC 内リソースへの直接アクセスが可能になる。

  • Amazon RDS / Aurora(プライベートサブネット) に直接接続
  • ElastiCache(Redis / Memcached) にキャッシュアクセス
  • VPC 内の社内 API(ALB / NLB 経由)へリクエスト
  • AWS Direct Connect / Site-to-Site VPN 経由のオンプレサーバーへ到達
  • VPC Endpoint を介した S3 / DynamoDB へのプライベート通信
  • 特定の固定 IP からの外向き通信(NAT Gateway + EIP で送信元 IP を固定)
  • VPC Lattice 経由のサービスメッシュ統合

逆に、Lambda 関数を VPC に入れた瞬間、デフォルトのインターネット経路は失われる。インターネット越しの API(外部 SaaS・他社 API)を引き続き呼び出したい場合は、NAT Gateway を経由する経路を別途用意する必要がある。


3. 特徴

観点仕様
ENI 種別Hyperplane ENI(AWS マネージド、ユーザーには見えない)
ENI 紐付け単位security-group : subnet の組み合わせごとに 1 ENI を共有
同時接続数1 ENI あたり 最大 65,000 接続/ポート(超えると自動スケール)
作成タイミング関数作成時 / VPC 設定変更時(最大 90 秒程度)
コールドスタート影響2019 年以降は VPC 関数も非 VPC 関数とほぼ同等の起動時間
インターネット出口NAT Gateway もしくは NAT インスタンスが必要(IGW のみでは不可)
IAM 必須権限AWSLambdaVPCAccessExecutionRole(ENI 作成・削除・記述)
対応 AZ 数推奨:最低 2 AZ のサブネットを指定
IPv6デュアルスタックサブネットおよび関数の IPv6 有効化で対応

VPC アタッチありとなしの比較

Lambda:VPC アタッチあり vs なし
評価項目
VPC アタッチあり
VPC アタッチなし(既定) 推奨
実行環境の場所 指定 VPC のサブネット内 AWS マネージド VPC(不可視)
到達先 VPC 内 + NAT 経由でインターネット インターネットの全パブリック API
コールドスタート Hyperplane で大幅改善(ほぼ同等) 最速
料金(経路) NAT Gateway 料金が乗る場合あり なし
IP 固定 NAT Gateway + EIP で可 不可(実行ごとに変動)
IAM 権限 AWSLambdaVPCAccessExecutionRole 必須 基本ロールのみ
ユースケース RDS/ElastiCache/オンプレ接続 API Gateway, S3, DynamoDB 中心の処理
プライベート IP の宛先がない限り、VPC アタッチは不要。

4. 仕組み

4-1. Hyperplane ENI の役割

Hyperplane ENI は、Lambda 実行環境と VPC を結ぶ「共有の入口」。

  • security-group : subnet 組み合わせ単位で 1 つ作成される
  • 同じ組み合わせを使う複数の Lambda 関数で 共有される(関数ごとに ENI が増えない)
  • 1 ENI で 最大 65,000 接続/ポートをさばき、超えると自動でスケールアウト
  • 実行環境は ENI へ ネットワークトンネルを張って通信するため、起動時の ENI 生成待ちが不要
[Lambda 実行環境 #1]──┐
[Lambda 実行環境 #2]──┼─→ Hyperplane ENI ─→ サブネット ─→ VPC 内リソース
[Lambda 実行環境 #3]──┘   (SG:Subnet 単位で共有)

4-2. ENI が作られるタイミング

イベントENI への影響
関数を VPC に新規アタッチ該当 SG:Subnet 組み合わせの ENI を作成(最大 90 秒)
既存関数の VPC 設定を変更旧 ENI 削除 → 新 ENI 作成
関数を呼び出した瞬間ENI 作成は発生しない(事前作成済み)
関数を VPC からデタッチENI は遅延削除(数十分〜数時間)

ポイント:旧アーキテクチャ(2019 年以前)はコールドスタートのたびに ENI を関数のアタッチ・デタッチしていたため秒〜数十秒の遅延が発生したが、Hyperplane 方式では事前作成・共有のため コールドスタートのネットワーク要因はほぼ消えた

4-3. サブネット選択ルール

  • 最低 2 AZ にまたがるサブネットを指定(推奨は 3 AZ):1 AZ 障害時の継続実行を担保
  • 指定したサブネット内のどれで起動するかは AWS が決定:明示的な制御はできない
  • サブネットの IP 空間が枯渇すると Lambda がスケール不能/27(30 IP)等の狭いサブネットは危険、/24 以上を推奨
  • VPC 内のサブネットは「プライベートサブネット」を使う:Lambda 自体がパブリック IP を持てないため、パブリックサブネットに入れても意味がない

4-4. セキュリティグループの設計

Lambda 用 SG は アウトバウンドのみを制御するのが基本(Lambda は呼び出される側ではないため、インバウンドは無関係)。

  • 例:「Lambda → RDS(5432)」「Lambda → ElastiCache(6379)」「Lambda → 外部 HTTPS(443)」のみ許可
  • 接続先(RDS の SG 等)には Lambda SG からのインバウンドを許可するルールを書く(IP ではなく SG 参照で書くのが定石)

4-5. インターネット出口の作り方

Lambda はパブリック IP を持てない(EIP 割当不可)ため、VPC 内から外部 HTTPS API を叩くには次のいずれかが必要。

構成用途コスト
プライベートサブネット → NAT Gateway → IGW一般的なインターネット出口NAT Gateway 時間 + データ処理料金
プライベートサブネット → VPC EndpointS3 / DynamoDB / その他 AWS サービス専用Interface 型のみ時間課金(Gateway 型は無料)
NAT Gateway + EIP送信元 IP を固定して API ホワイトリスト対応上記 + EIP 料金
IPv6 + Egress-only IGWIPv6 アウトバウンド限定EIGW 自体は無料

5. ユースケース

ユースケース 1:API Gateway → Lambda → RDS の典型構成

API Gateway 経由のリクエストを VPC 内 Lambda が受け、プライベートサブネットの RDS に SQL を発行する。最も頻出のパターン。

クライアント → API Gateway → Lambda(VPC 内)→ RDS(Multi-AZ)
                                ↓(必要なら)
                                NAT Gateway → 外部 API

ユースケース 2:固定送信元 IP を要求する外部 API への中継

取引先 SaaS が「IP ホワイトリスト方式」しか提供しないとき、Lambda → NAT Gateway → EIP の経路で 送信元 IP を固定し、ホワイトリストに 1 つだけ EIP を登録する。

ユースケース 3:オンプレミスへの定期データ同期

Site-to-Site VPN または Direct Connect で繋いだオンプレサーバーに対し、EventBridge スケジュールで Lambda を起動して同期ジョブを走らせる。VPN の宛先はプライベート IP のため、VPC アタッチが必須。

ユースケース 4:ElastiCache を介したセッション共有

API Gateway + Lambda のステートレスな構成にセッションを持たせるため、ElastiCache Redis を VPC 内に配置。Lambda 同士で同じ ElastiCache を参照する。

ユースケース 5:VPC Lattice 経由のサービスメッシュ

VPC Lattice の Target Group として Lambda 関数を登録し、他 VPC・他アカウントのサービスから呼び出せるようにする。サービスディスカバリと認可を一元化できる。


6. メリット・デメリット


7. ベストプラクティス

  • 本当に VPC が必要かを最初に問う:DynamoDB / S3 / SQS など AWS マネージドサービスのみが宛先なら、VPC アタッチせずに VPC Endpoint も不要。
  • 最低 2 AZ・できれば 3 AZ にサブネットを配置:単一 AZ では AZ 障害時に関数全停止のリスク。
  • サブネット CIDR は十分大きく(/24 以上推奨):Hyperplane 共有とはいえ、極端なスケール時には IP 枯渇が起こりうる。
  • Lambda 専用サブネットを切る:他リソースとの IP 競合を避け、ENI のスケールを予測しやすくする。
  • セキュリティグループは「最小権限・SG 参照」で記述:宛先 SG を直接指定し、IP レンジでの開放を避ける。
  • NAT Gateway はリージョン共有が基本:Lambda 専用に NAT を持つのではなく、既存の共有 NAT を再利用してコスト最適化。
  • S3 / DynamoDB は VPC Endpoint で迂回:NAT 経由のデータ転送費を削減できる。
  • IAM ロールには AWSLambdaVPCAccessExecutionRole を必ず付与:これがないと ENI 作成権限不足で関数が起動できない。
  • VPC Flow Logs を有効化:Lambda の通信が想定通りの宛先・ポートに飛んでいるかを後追い検証できる。

8. 関連用語


9. 関連サイト

AWS 公式

参考記事



🎓 試験での出題傾向

試験重要度主な出題パターン
CLFLambda の概念把握レベル、VPC は名前のみ
SAA「Lambda が RDS にアクセスできない」のトラブル原因、サブネット選択、NAT Gateway の必要性、IP 固定要件
DVAVPC アタッチ時の権限不足エラー、ENI 作成の理解、コールドスタック改善知識
SOAサブネット IP 枯渇による関数スケール失敗、Flow Logs での通信監視

特に SAA では次の典型問題に注意:

  1. 「Lambda が VPC 内 RDS に接続できない」 → 実行ロールに AWSLambdaVPCAccessExecutionRole がない / SG の許可不足 / サブネット選択ミス
  2. 「Lambda の送信元 IP を固定したい」 → プライベートサブネット + NAT Gateway + EIP の構成
  3. 「Lambda を VPC に入れたらインターネットに出られなくなった」 → IGW のみではダメ、NAT Gateway 経由が必要
  4. 「Lambda の S3 アクセスを VPC 内に閉じたい」 → S3 Gateway 型 VPC Endpoint を作成
  5. 「コールドスタートが遅い」古い前提の出題 → 2019 年以降は Hyperplane ENI でほぼ解消されている