今回は、Lambda関数からプライベートサブネット内のAWSリソースにアクセスする方法について解説します!
この内容は、実務でもよく使うシーンがあり、さらにAWS認定ソリューションアーキテクト アソシエイト (SAA)の試験範囲にも含まれていますので覚えたい内容です!
よく忘れてしまう内容なので自分なりにまとめました。
結論としては、Lambda関数からプライベートサブネット内のリソースにアクセスするには、Lambda関数にVPCアクセスの設定を行う必要があります。
LambdaとVPCの関係
Lambda関数は作成されると、自動的にLambda専用のセキュアなVPCに構成されます。このVPCからはインターネットやパブリックサブネット内のAWSリソースへはアクセスできますが、プライベートサブネット内のリソースには直接アクセスできません。
プライベートサブネット内のリソースへアクセスするには?
Lambda関数からプライベートサブネット内のリソースにアクセスさせたい場合、Lambda関数にVPCアクセスの設定を行います。この設定では、アクセスしたいリソースがあるVPCやサブネットを選択、Lambda関数に適切なセキュリティグループを設定します。
このVPCアクセスを設定すると、Lambda関数はENI(Elastic Network Interface)をサブネット毎に作成し、そのENIの間にプライベートサブネット内のAWSリソースにアクセスすることができます。
注意点: Lambda関数とインターネットアクセス
注意点として、Lambda関数にVPCアクセスを設定すると、インターネットへのアクセスができなくなるという点があります!!
この問題を解決するには、プライベートサブネットからインターネットへアクセスする際に使用するのと同様に、パブリックサブネットのNATゲートウェイまたはNATインスタンスを利用する必要があります。
まとめ
Lambda関数からプライベートサブネット内のリソースにアクセスするにはVPCアクセスの設定が必要です。
VPCアクセス設定を行うと、Lambda関数はプライベートサブネット内のリソースに接続できるENIを作成します。
インターネットアクセスが必要な場合はNATゲートウェイを使って解決します。