キューのメッセージが0になったときに通知することは、よくやると思いますが、ここでは、キューのメッセージが処理されなくなったときの通知に関して紹介します。
当然、CloudWatchを利用するわけですが、キューのメッセージが処理されなくなった状態の確認は、アプリケーションが受信したメッセージ数を表す下記のNumberOfMessageReceivedを確認することで可能です。

キューのメッセージが処理されなくなった場合は、NumberOfMessageReceivedが「0」になるはずです。

そして、このNumberOfMessageReceivedに対して、下記のようにアラームを作成します。
ここでは値が「0」になったら(メッセージが処理されなくなったら)
アラーム状態になるように設定しています。

メールは下記のように、状態が「ALARM」、「OK」、「INSUFFICIENT_DATA」になった場合、つまり、すべての状態の変わり目に送信されるようにしました。

SNSを確認すると下記のように、上記で指定した通知先(メールアドレス)が作成されていますが、まだ、PendingConfirmationの状態で有効にはなっていません。

この状態では、次のようなメールが送られているはずなのでConfirm subscriptionを
クリックすることで有効になります。

You have chosen to subscribe to the topic:
arn:aws:sns:ap-northeast-1:238042831511:golfans
To confirm this subscription, click or visit the link below (If this was in error no action is necessary):
Confirm subscription
Please do not reply directly to this e-mail. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send email to sns-opt-out

有効になると、下記のようにSubscription IDが付与されます。

そして、実際の通知時に送られてくるメールは下記のようなものとなります。

[ALARM] Alarm ZeroMessageReceived in APAC - Tokyo is now in state ALARM
You are receiving this email because your Amazon CloudWatch Alarm "ZeroMessageReceived" in the APAC - Tokyo region has entered the ALARM state, because "Threshold Crossed: 1 datapoint (0.0) was less than or equal to the threshold (0.0)." at "Sunday 28 August, 2011 20:56:25 UTC".
View this alarm in the AWS Management Console:
...
Alarm Details:
- Name:                       ZeroMessageReceived
- Description:                ZeroMessageReceived
- State Change:               OK -> ALARM
- Reason for State Change:    Threshold Crossed: 1 datapoint (0.0) was less than or equal to the threshold (0.0).
- Timestamp:                  Sunday 28 August, 2011 20:56:25 UTC
Threshold:
- The alarm is in the ALARM state when the metric is LessThanOrEqualToThreshold 0.0 for 300 seconds.
Monitored Metric:
- MetricNamespace:            AWS/SQS
- MetricName:                 NumberOfMessagesReceived
- Dimensions:                 [QueueName = crawl]
- Period:                     300 seconds
- Statistic:                  Sum
- Unit:                       not specified
State Change Actions:
- OK: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab]
- ALARM: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab]
- INSUFFICIENT_DATA: [arn:aws:sns:ap-northeast-1:000000000000:suz-lab]

以上で、アプリケーションの処理が途中で止まっても、すぐに検知することができます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら