AWS EventBridge cron jobs fail silently by default. A Lambda error, a timeout, or a missed invocation produces no notification unless you set it up explicitly. This guide covers 4 monitoring strategies — from simple CloudWatch alarms to heartbeat monitors — with generated AWS CLI commands for each.
EventBridge fires your scheduled rule at the right time — that part works reliably. What it doesn't do is tell you if the Lambda it invokes throws an error, times out, or produces wrong output. EventBridge only tracks whether it attempted the invocation, not whether it succeeded.
# CloudWatch Alarm — alert when Lambda errors > 0 aws cloudwatch put-metric-alarm \ --alarm-name "my-scheduled-function-errors" \ --alarm-description "Alert when my-scheduled-function has Lambda errors" \ --metric-name Errors \ --namespace AWS/Lambda \ --dimensions Name=FunctionName,Value=my-scheduled-function \ --statistic Sum \ --period 300 \ --evaluation-periods 1 \ --threshold 1 \ --comparison-operator GreaterThanOrEqualToThreshold \ --alarm-actions arn:aws:sns:us-east-1:ACCOUNT_ID:my-alerts \ --treat-missing-data notBreaching # Also alert when invocations drop to 0 (missed schedule) aws cloudwatch put-metric-alarm \ --alarm-name "my-scheduled-function-not-running" \ --alarm-description "Alert when my-scheduled-function stops being invoked" \ --metric-name Invocations \ --namespace AWS/Lambda \ --dimensions Name=FunctionName,Value=my-scheduled-function \ --statistic Sum \ --period 3600 \ --evaluation-periods 1 \ --threshold 1 \ --comparison-operator LessThanThreshold \ --alarm-actions arn:aws:sns:us-east-1:ACCOUNT_ID:my-alerts \ --treat-missing-data breaching