VPCを指定しないでLambdaを作成した場合
VPCを指定しないで作成した場合、 AWSが管理するインターネット接続が可能なネットワーク環境(AWS管理VPCのような環境)で実行されます。
この状態では以下の仕様となります。
- Lambda から インターネットの特定のエンドポイントにHTTPアクセスが可能
- インターネットからLmabda へのHTTPアクセスができない
この状態の時、Lambda へのHTTPリクエストを投げるためには、APIGateway などのサービスを利用する必要があります。
APIGatewayって何?
WEBフレームワークを触ったことある方にイメージしやすいように一言で表すと、Route みたいな感じです。
APIGatewayの役割:
- 認証とアクセス制御: API Gatewayには、IAM、Cognito、カスタムオーソライザーによる認証機能があり、ユーザーアクセスを管理できます。
- 統合オプション: Lambdaや他のAWSサービスとシームレスに統合するための機能があり、APIリクエストを処理できます。例えば、Lambda関数と統合することでサーバーレスアーキテクチャを構築できます。
- キャッシング: API Gatewayはキャッシュ機能を備えており、キャッシュを有効にするとAPIの応答速度が向上し、バックエンドの負荷が軽減します。
- カスタムドメインの設定: APIに独自のドメインを割り当てることが可能で、ユーザーエクスペリエンスを向上させるための設定も簡単に行えます。
VPCを指定してLambdaを作成した場合
アプリケーションが稼働しているVPCの中だけで使用するLambdaを作成するといったユースケースも存在するかと思います。
VPCのプライベートサブネットのリソースにアクセス
プライベートサブネット内のリソースは、インターネットに直接アクセスできないように設計されていますが、インターネットへのアクセスが必要なケースもあります。そのため、プライベートサブネット内から外部のリソースやサービスにアクセスする方法として以下の方法が使われます。
- NAT Gateway: プライベートサブネット内のリソースがインターネットに出ていく際に利用するためのゲートウェイです。NAT Gatewayをパブリックサブネットに配置し、プライベートサブネットからNAT Gateway経由でインターネットにアクセスできます。
- VPCエンドポイント: 特定のAWSサービス(S3やDynamoDBなど)にアクセスする場合に使われるVPCエンドポイントを設定できます。インターネットに出る必要なく、プライベートネットワーク内でAWSサービスに直接接続できます。
Lambdaからインターネットにアクセス
AWS LambdaがVPCのプライベートサブネット内にデプロイされている場合、直接インターネットにアクセスすることはできません。しかし、Lambdaが外部サービスやAPIにアクセスする必要があるケースも多くあります。その場合、次の方法を用います。
- NAT Gateway: Lambda関数がプライベートサブネット内にある場合、NAT Gatewayを経由することでインターネットにアクセスできます。LambdaのセキュリティグループやサブネットルートテーブルにNAT Gatewayを設定して、外部との通信を可能にします。
- VPCエンドポイント: Lambda関数がAWSの内部サービス(S3やDynamoDBなど)と連携する場合、VPCエンドポイントを利用することで、インターネットを経由せずにサービスにアクセスできます。