VPC内のプライベートリソースへのアクセス

AWS Lambda によるサーバーレスアプリケーション

Claudio Canales

Senior DevOps Engineer

VPCとは?

  • VPCはAWS上のプライベートネットワークです。
  • アドレス空間、ルーティング、ファイアウォール制御を提供します。
  • リソースの接続方法はユーザーが決定します。

VPCコンポーネントの概要

AWS Lambda によるサーバーレスアプリケーション

わかりやすい例:ゲート付き住宅地

  • サブネットは区画(エリア)です。
  • セキュリティグループはゲートのルールです。
  • NATはパブリックインターネットへの共有出口です。

ゲートコミュニティのアナロジー

AWS Lambda によるサーバーレスアプリケーション

LambdaをVPCで実行する理由

  • 内部サービスやデータベースなどのプライベートリソースにアクセスできます。
  • セキュリティグループがLambdaの接続先を制御します。

Lambda VPCプライベートアクセス

AWS Lambda によるサーバーレスアプリケーション

設定する内容

  • サブネットを選択します。
  • セキュリティグループを選択します。
  • LambdaはVPC内のIPアドレスを取得し、プライベートエンドポイントに接続します。

VPC設定の入力と効果

AWS Lambda によるサーバーレスアプリケーション

サブネット:関数の実行場所

  • サブネットはネットワーク上での関数の配置場所を決定します。
  • プライベートサブネットにはインターネットへの直接ルートがありません。
  • ハンドラーが必要なリソースに到達できるサブネットを選択します。

サブネット選択の影響

AWS Lambda によるサーバーレスアプリケーション

セキュリティグループ:ファイアウォールルール

  • セキュリティグループはネットワークインターフェースのファイアウォールルールです。
  • インバウンドとアウトバウンドのトラフィックを制御します。
  • アウトバウンドルールがLambdaのデータベース接続可否を決めることがあります。

セキュリティグループの例え

AWS Lambda によるサーバーレスアプリケーション

ENIとコールドスタート

  • ENI(Elastic Network Interface)はネットワークインターフェースです。
  • Lambdaはハンドラーを呼び出す前に、ENIを作成してアタッチする必要があります。
  • この追加のネットワーク設定がコールドスタートの遅延を引き起こすことがあります。

ENIコールドスタートのシーケンス

AWS Lambda によるサーバーレスアプリケーション

ENIの例え:ネットワークケーブルを接続する

  • ENIは関数のネットワーク接続です。
  • 選択したサブネット内に作成されます。
  • セットアップ作業が多いほど、コールドスタートが遅くなることがあります。

ENIのケーブル接続の例え

AWS Lambda によるサーバーレスアプリケーション

アウトバウンドインターネットアクセス

  • プライベートサブネットは通常、パブリックインターネットに接続できません。
  • アウトバウンドルートがなければ、パブリックAPIへの呼び出しはタイムアウトします。
  • よく使われる方法はNATゲートウェイです。

NATゲートウェイのアウトバウンドフロー

AWS Lambda によるサーバーレスアプリケーション

NATが必要なのはどんなとき?

  • パブリックインターネットのエンドポイントを呼び出す場合はNATが必要です。
  • VPCのプライベートリソースのみを使用する場合、NATは不要なことがあります。

NATの要否判断図

AWS Lambda によるサーバーレスアプリケーション

ネットワーク設定が誤っている場合のよくある症状

  • タイムアウトはルートまたはNATの設定漏れを示します。
  • 接続拒否はセキュリティグループのルールが原因です。

ネットワーク症状チェックリスト

AWS Lambda によるサーバーレスアプリケーション

推奨される手法

  • プライベート接続にのみVPCを使用します。
  • 設定はシンプルに保ちます。
  • コールドスタートの遅延と接続エラーを監視します。

VPCのベストプラクティス

AWS Lambda によるサーバーレスアプリケーション

重要なポイント

  • VPCはLambdaにプライベートネットワークを提供します。
  • サブネットとセキュリティグループを設定します。
  • ENIはコールドスタートのオーバーヘッドを増やすことがあります。
  • プライベートサブネットからインターネットへのアウトバウンドアクセスにはNATが必要です。

VPC接続のトレードオフ

AWS Lambda によるサーバーレスアプリケーション

練習しましょう!

AWS Lambda によるサーバーレスアプリケーション

Preparing Video For Download...