EventBridge ルールや Lambda 関数を更新している間にイベントが発火した際の動作を教えてください

2022.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

SAMを用いて EventBridge ルールや Lambda 関数をデプロイしています。

EventBridge ルールでは Cron式を用いて、毎時〇〇分に起動し、Lambda 関数を実行しています。

既存の Lambda 関数や EventBridge ルールを更新する際、 更新中のタイミングでイベントの発火が起こった場合は、どのような動作になりますか?

どう対応すればいいの?

Lambda 関数の更新については、更新した直後では、短い間、新しい設定ではなく、古い設定でも実行される可能性があります。[1]

EventBridge のルールやターゲットについても同様に、更新を実施された場合、その更新が有効となるまでに短い間時間を要し、古い設定が適用される場合があります。[2]

そのため、例えば EventBridge のスケジュールパターンで、 更新前パターンのイベント発火の直前に、更新が行われた場合、 古い設定が適用され、その時刻のイベントが実行される可能性があります。

このように、Lambda と EventBridge のいずれにおいても、 更新直後では、 更新以前の設定が適用される可能性がありますのでご留意ください。

これらのリソース更新にあたっては、変更前後のどちらでもイベントが発火しない(関数が実行されない)時間帯など、なるべく上記の影響を受けないタイミングで実施していただくのが望ましいです。

参考資料

[1] AWS Lambda よくある質問

Q: 自作の AWS Lambda 関数は、コードや設定を変更してもそのまま使用できますか?

はい。Lambda 関数を更新すると、短い間 (通常は 1 分未満)、リクエストは古いバージョンと新しいバージョンのいずれかによって処理されます。

[2] ルールを作成または修正したが、テストイベントと一致しない

ルールまたはそのターゲットを変更すると、受信イベントはすぐに、新しい、またはか更新されたルールへのマッチングを開始/停止しないことがあります。変更が有効になるまで、しばらくお待ちください。