AWS Lambda を VPC モードで動かすメリットと注意点

クラウドサービス

AWS Lambda には、VPC にデプロイ(配置)する機能があります。

基本的には「非 VPC」環境での利用がオススメですが、
EC2 や RDS などの VPC リソースと連携する場合には必要となってくる機能です。

AWS Lambda を VPC に配置することによるメリットと活用方法・注意点について解説します。



Lambda を VPC に配置するメリット

VPC に配置することにより、大きく3つのメリットが得られます。
逆に考えると、以下の3要素が不要な場合は非 VPC 環境で実行する方が良いでしょう。

VPC 内にあるリソースを活用できる

VPC に配置済みのリソースへアクセスできます。
Lambda から直接 EC2 や RDS に繋ぐ必要がある場合には必須の設定です。

セキュリティグループを自由に設定可能

Lambda を所属させるサブネットとセキュリティグループの設定が可能です。

EC2 インスタンスと同じ要領で、ネットワーク周りをカスタマイズできるようになります。

外部接続時の IP アドレスを固定化できる

インターネットアクセスを NAT ゲートウェイ経由にすることで、
Lambda から外にアクセスする際の IP アドレスを固定化できます。

セキュリティ要件など、接続元 IP アドレスを絞る必要がある場合に有効な手段です。

Lambda を VPC に配置する際の注意点

VPC 環境に配置することで、通常の Lambda とは異なる処理が行われます。

ENI を作成する権限が必要

Lambda を VPC に配置すると ENI (Elastic Network Interface) が付与されます。
仮想的な NIC を紐づけることで、Lambda が VPC 内と通信する仕組みです。

そのため、ENI の作成権限を Lamdba に与える必要があります
具体的には AWSLambdaVPCAccessExecutionRole の IAM ロールを Lambda に付与します。

起動時間が遅くなる

Lambda の起動時に ENI を作成する処理が入るため、起動時間が伸びます
ある程度のブレはありますが、数秒~数十秒ほど掛かります。

短時間のうちに連続して起動した場合は ENI が再利用されるため問題ありません。

AWS Lambda を VPC に配置する活用事例

Redis や memcached を組み合わせる

Lambda の処理においてキャッシュを利用する場合です。
VPC に配置することによって、ElastiCache との接続が可能になります。

小規模なバッチの実行環境として利用

RDS や EC2 と連動した小規模なバッチを実行する用途で使えます。
直近のアップデートにより、Lambda は15分まで実行可能となりました。

15分以内に収まるシンプルなバッチであれば、Lamdba で済む場合があります。

Lambda 実行時に内部サーバで認証を行う

Lambda の実行前に認証を掛けたい場合、VPC 内のサーバーと連携させます。
実装次第ですが、LDAP や Active Directory での認証も可能です。

まとめ

AWS Lambda を VPC に配置するメリットと注意点を解説しました。

単純に Lambda を実行するだけであれば、VPC に配置するメリットはありません。
IAM ロールやセキュリティグループなどの面倒な設定が不要なためです。

外部アクセス時の IP 固定化など、VPC に配置する必要がある場合のみ設定してみましょう。

【関連記事】
AWS のサーバー設置場所まとめ
Fargate、ECS、EKS の違いを解説
AWS Lambda と API Gateway の違いを解説
AWS でサーバーレス構成を実現するサービス
AWS Elastic IPアドレス (EIP) とは何か?