Lambda のメトリクスを監視する CloudWatch Alarm がアラーム状態にならないときの対処方法

2021.05.24

困っていた内容

Lambda の Errorsメトリクス が閾値を超えた場合に CloudWatch Alarm がアラーム状態になるように設定しましたが、 メトリクスにエラーが記録されてもアラーム状態になりません。
アラーム状態になるようにするにはどうしたら良いでしょうか。

どう対応すればいいの?

CloudWatch Alarm の評価期間が Lambda の実行時間より大きくなるように設定してください。

Errorsメトリクス のタイムスタンプには Lambda の開始した時刻が記録されますが、 メトリクスに反映されるタイミングは Lambda の終了時です。 そのため、Lambda の実行時間 > 評価期間 の場合、評価期間内にはまだメトリクスに出力されず、評価期間外になってからメトリクスに出力されるため、 メトリクスには記録があるがアラーム状態にはならないという状況が発生します。

評価期間の変更方法

設定したいアラームの編集画面を開きます。

下へスクロールして、その他の設定を開くと次の画面になります。

評価期間は、期間 x データポイント数 のため、 乗算した値が Lambda の実行時間より大きくなるように変更して、「アラームの更新」をクリックします。

参考資料

AWS Lambda 関数メトリクスの使用 - AWS Lambda

メトリクスのタイムスタンプには、関数が呼び出された時間が反映されます。実行時間によっては、メトリクスが出力される数分前になる場合があります。 たとえば、関数のタイムアウトが 10 分の場合は、正確なメトリクスを得るために過去 10 分以上を確認します。

Amazon CloudWatch でのアラームの使用 - Amazon CloudWatch