- 公開日
- 最終更新日
VPCに接続しているLambdaは定期実行しよう
この記事を共有する
目次
皆さんこんにちは、サービスGの山内です。
先日久しぶりに呼び出したAWS Lambdaの起動に失敗しました。
原因を調査したところ、知らなかったAWS Lambdaの仕様があったため、紹介したいと思います。
起動に失敗した原因
AWS Lambdaに付与されているENIが削除されてしまい、起動に失敗したようです。
Amazon VPCに接続しているAWS Lambdaには、ENIが付与されています。
このENIを経由して、Amazon VPC内のリソースなどにアクセスすることができます。

ENIにはライフサイクルルールが存在し、AWS Lambdaが14日間呼び出されなかった場合にENIを削除するようです。
公式ガイドからの引用
Lambda 関数が 14 日間アイドル状態のままである場合、Lambda は未使用の Hyperplane ENI を回収し、関数の状態をInactiveに設定します 次の呼び出しの試行は失敗し、Lambda が Hyperplane ENI の作成または割り当てを完了するまで、関数は再び保留状態になります。設計が ENI の永続性に依存しないことをお勧めします。
ENI削除の回避策
ENIが再作成されるまでの間、最初の呼び出しはエラーとなりますが、ENI再作成後の呼び出しは正常に成功します。
最初の呼び出しの失敗を許容できない場合は、Amazon EventBridgeで定期実行させ、ENIの削除を回避することが有効です。
業務で、ENIの削除が原因のAWS Lambdaの起動失敗に遭遇し、AWSサポートに最適な実行間隔を問い合わせたところ、
14日よりも短い間隔でENIが削除されてしまうケースがあり、7日間隔の定期実行が推奨される、と回答をいただきました。
そのため、Amazon EventBridgeでの定期実行を行う際は、7日間隔での実行とするのがいいでしょう。
おわりに
今回の事象でAWS Lambdaへの理解が深まりました。
Amazon VPCに接続するAWS Lambdaを設計する際に、ENIの削除について考慮を忘れないようにします。
Amazon VPCに接続するAWS Lambdaを運用されている方は、ぜひ定期実行の設定を検討してみてください。
この記事は私が書きました
山内 宏紀
記事一覧CloudFormationが好きです。 使っているギターはSGです。