VPC LambdaはVPC外にあると知っておこう
はじめに
Lambdaは、VPC内のリソースと通信させたいとき、VPC Lambdaとして起動することができます。VPC LambdaというとVPCの内部にLambdaがあるような勘違いをしやすいのですが、実際はVPC外のAWSが管理するLambdaサービス用のVPCにLambdaがあり、そこから我々が作成したVPCに繋がれています。下記の絵が分かりやすいです。
引用元:[発表] Lambda 関数が VPC 環境で改善されます
このことを知らなくても、VPC Lambdaをなんとなく使うことはできるのですが、知らないと困ることもあります。本記事では、知らないとどんな困りごとがあるのかを紹介します。
知らないと困ること
下記のような環境を作るときに、VPC LambdaがVPC外にあることを知らないと困ります。
それは、「VPC Lambdaをプライベートサブネットで起動している」かつ「VPC LambdaをECRのコンテナイメージから起動する」環境です。
通常、VPC内からVPC外にインターネットを経由せずにセキュアにアクセスする際にはVPC Endpointを使います。今回の場合ですと、ECRからコンテナイメージをpullするためにECRのVPC Endpointを使います。実際に、FargateなどではECRのVPC Endpointを作成する必要があります。
ただし、VPC Lambdaの場合、同じようにECRのVPC Endpointを作成する必要はありません。なぜなら、VPC LambdaはVPC 内にはないため、ECRのVPC EndpointなしでECRからコンテナイメージをpullできるためです。VPC LambdaはVPC 外にあると知らないと無駄にECRのVPC Endpointを作成してしまいます。
終わりに
VPC LambdaはVPC外にあることを知っておきましょう。
Discussion