発生事象
EC2インスタンスのイメージバックアップを取得するLambda関数をLambda コンソールの [テスト] 画面にて関数のテストを実行した際に、1 度のテスト実行操作に対して関数が 2 回呼び出されました。
⇒バックアップ処理自体は問題なく完了したが、CloudWatchアラームにてエラーとして検知されてしまいました。
同時刻に2つのログストリームが生成され、片方のログは成功、もう片方は失敗という内容でした
Lambdaの仕様として、同期呼び出しとしてLambdaを実行すれば多重実行を防げるといったような情報も確認しましたが、同期実行(CloudShellからの実行)でも2重実行されてしまいました。
原因
本事象をAWSに問い合わせたところ、以下の回答がありました。
・Lambda コンソールの [テスト] 画面にてテストを実行した場合、基本的に関数は 1 度呼び出される
・ただし、利用しているブラウザから Lambda サービスまでのネットワーク経路上にあるプロキシサーバーなどに起因して2重実行される場合がある
つまり、接続時のネットワーク環境に起因して2重実行されてしまうことがあるとのことでした。
本事象は社内ネットワークからAWSコンソール画面に接続し、Lambdaを実行していた時に発生していた事象だったので、試しに別のネットワーク環境からLambdaを実行してみたところ、2重実行されず一度の処理で実行が完了しました。
また、よくある構成のEventBridge 経由で呼び出される Lambda の場合は、ネットワーク環境に起因して重複して起動されることはないとのことでした。
教訓
Lambdaを手動実行する際は、端末が接続しているネットワークに起因して本事象がおこる可能性があることを考慮しましょう。