概要
- 「VPC Lambda」という名称は正式なAWSサービスではない
- 一般的に、Lambda関数でVPC内のリソースにアクセスする方法を指して「VPC Lambda」と呼ぶことがある
Lambda関数でVPC内のリソースにアクセスするとは?
Lambdaはリージョンサービス
- アーキテクチャの例として「API Gateway → Lambda → DynamoDB」のような構成の場合、いずれもリージョンサービスなのでLambdaをVPC内に配置する必要はない
VPC内のリソースにアクセスしたい場合
- Lambda関数をVPC内で使用できるように設定する必要がある
- Lambdaの設定画面で以下の設定を行う
- VPC、サブネット、セキュリティグループの紐づける
- VPCおよびアクセスしたいVPC内のリソースへのアクセス権限をIAMロールとして設定する
VPC Lambdaによる外部通信が必要な場合
- Lambdaをプライベートサブネットに配置した場合、外部との通信にはNAT Gatewayが必要
- Lambda(プライベートサブネット)→NAT Gateway(パブリックサブネット)→インターネットという通信経路になる
【補足事項】
VPC LambdaはVPCにあるけどVPCにはない?
- 上記の例ではプライベートサブネットにVPC Lambdaが配置されているという説明をした
- 実態はLambdaが配置されているVPCとユーザが作成しているVPCが分かれており、NAT機能をつかって接続されているらしい
VPC Lambdaがスケールした際のIP枯渇の心配
- VPC Lambdaがスケールした際、VPC内のIPアドレス枯渇が心配になる
- Lambda側のVPC内でLambdaがスケール後、ユーザが作成したVPC内に新たにENIを作成するのではなく、NAT機能を用いて通信を集約することでプライベートIPの枯渇を防ぐ作りになっているとのこと
- Lambdaスケール時のIP枯渇は考慮されているものの、VPC設計のタイミングでそれらを踏まえて必要なIPアドレス数を見積もることが必要
補足事項の参考資料
- 補足事項についての詳細は以下のAmazon Web Serviceブログ記事を参照してほしい
- https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/