はじめに
LambdaとAPI Gatewayの勉強をしていて、パブリックサブネット内にあるLambdaまたはAPI Gatewayからプライベートサブネット内のAWSリソース(RDS等)へのアクセス方法が似ていて、どちらがどちらか迷いそうだったのでまとめます。
Lambdaのプライベートサブネットへのアクセス方法
作成したLambdaはLambdaサービスが所有するVPC内で実行されます。
デフォルトでは、Lambda 関数はアカウントのVPCに接続されていません。インターネットや、インターネットを経由してパブリックサブネット内のAWSリソースにはアクセスできます。
なので、以下の方法でプライベートサブネット内のリソースに接続します。
- NATゲートウェイの設定をする(VPC-to-VPC NAT)
- Lambdaの実行の際にENI (Elastic Network Interface) が、LambdaのVPC のサブネット構成ごとに割り当てれる
- プライベートサブネット内のリソースにアクセス
上記を実行すると、プライベートサブネット内へのリソースにはアクセスできますが、インターネットへアクセスできなくなります。
API Gatewayのプライベートサブネットへのアクセス方法
Amazon API Gatewayで作成したAPIはVPC外に配置されるため、インターネットからパブリックサブネット内のAWSリソースにはアクセスできます。
ただ、プライベートサブネット内のAWSリソースにはアクセスできません。
なので、以下の方法でプライベートサブネット内のリソースに接続します。
- API GatewayのVPCリンクを作成する
- ターゲットにNLBを指定する(インスタンスを直接は指定できない)
- 作成完了後、プライベートサブネット内のリソースにアクセス
まとめ
まだまだ、勉強が足りていませんが、わかる範囲でまとめてみました。
もやっとしていた部分が明確になったと思います。