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) とは何か?