0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Lambda】手動実行する際、意図せず2重実行される事象について

Last updated at Posted at 2024-04-20

発生事象

EC2インスタンスのイメージバックアップを取得するLambda関数をLambda コンソールの [テスト] 画面にて関数のテストを実行した際に、1 度のテスト実行操作に対して関数が 2 回呼び出されました。
⇒バックアップ処理自体は問題なく完了したが、CloudWatchアラームにてエラーとして検知されてしまいました。

同時刻に2つのログストリームが生成され、片方のログは成功、もう片方は失敗という内容でした

■Lambda実行時、CloudWatchに出力されたログ
Lambda.png

Lambdaの仕様として、同期呼び出しとしてLambdaを実行すれば多重実行を防げるといったような情報も確認しましたが、同期実行(CloudShellからの実行)でも2重実行されてしまいました。

原因

本事象をAWSに問い合わせたところ、以下の回答がありました。

・Lambda コンソールの [テスト] 画面にてテストを実行した場合、基本的に関数は 1 度呼び出される
・ただし、利用しているブラウザから Lambda サービスまでのネットワーク経路上にあるプロキシサーバーなどに起因して2重実行される場合がある

つまり、接続時のネットワーク環境に起因して2重実行されてしまうことがあるとのことでした。
本事象は社内ネットワークからAWSコンソール画面に接続し、Lambdaを実行していた時に発生していた事象だったので、試しに別のネットワーク環境からLambdaを実行してみたところ、2重実行されず一度の処理で実行が完了しました。
また、よくある構成のEventBridge 経由で呼び出される Lambda の場合は、ネットワーク環境に起因して重複して起動されることはないとのことでした。

教訓

Lambdaを手動実行する際は、端末が接続しているネットワークに起因して本事象がおこる可能性があることを考慮しましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?