VPC内にLambda関数を構築するときはパブリックサブネットは利用できない

VPC内にLambda関数を構築する場合、プライベートサブネットを利用することが推奨されている。 インターネットアクセスが必要な場合はNAT経由でアクセスしろとある。

アカウントの VPC に関数を接続すると、VPC からアクセス権が付与されない限り、関数はインターネットにアクセスできません。

プライベートサブネットからのインターネットにアクセスには、ネットワークアドレス変換 (NAT) が必要です。

docs.aws.amazon.com

ではLambda関数にパブリックサブネットを割り当てていた場合はNATなしにインターネットアクセスできるかというと、これはパブリックサブネットを利用していても直接インターネットアクセスできない。 これは、Lambda関数用のENIにはパブリックIPが割り当てられないから。サブネットの設定でパブリックIPを自動的に割り当てる設定になっていても付与されない。

dev.classmethod.jp

ドキュメントを読んだだけだと、プライベートサブネットを利用しましょう、プライベートサブネットからインターネットアクセスするにはNATを利用しましょう、とあたりまえの事が書いてある。パブリックサブネットに割り当ててもIGW経由でアクセスできないと明示的には書いていなかったので誤解していた。