あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

AWS LambdaをVPC内に配置するケースについて調べてみた

LambdaをVPC内に配置するケースがあることを何かで読んだがいろいろなケースを考えたらよくわからなくなったのでまとめてみた。
AWSって変にいじらず使う分には比較的簡単だがいろいろ制約が入るとめんどくさくなるイメージ・・・

VPC内にLambdaを配置する理由

LambdaからVPC内のリソースへのアクセスを安全に(インターネットを経由せず)行うため

VPC内にLambdaを配置するケース

・LambdaからプライベートサブネットのEC2やRDSに接続。
※逆にプライベートサブネットのリソースからLambdaへアクセスする場合はVPCEndpointで接続できるためVPC内に配置する必要はない。

例)
 LambdaからEC2:EC2の認証基盤(ADなど)に認証を行う。
 LambdaからRDS:Lambdaから直接RDSへデータの読み書きを行う。
が考えられるかな。。。
 

VPC内に配置した場合の考慮点

・Lambdaにセキュリティグループを設定する必要がある。
・Lambdaが所属するサブネットのIPを浪費する。
・LambdaがENIの作成/削除することができる権限(IAM Role)が付与されている必要がある。
・Lambdaの起動時にENIを作成するため起動速度が遅くなる(コールドスタート)。Lambdaコンテナが破棄される前に短時間で再度Lambdaが呼び出される(ウォームスタート)とリソースを再利用するためコールドスタートにくらべ若干起動時間が短縮される。
・Lambdaがインターネット接続が必要な場合NAT Gatewayなどのリソースが追加で必要になる。



感想

そもそもVPC外サービスのAPIがインターネットからだけでなく、AWS内部からの接続も受けれる口をデフォルトで持っておけばいい気がするが、それは手間なのか、いまさらできないのか・・・わざわざこんな仕組みまで作って経路を確保しているからたぶんできないんだろうな・・・