🍀

VPC LambdaはVPC外にあると知っておこう

2022/08/05に公開

はじめに

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