Serverless FrameworkでSQSのCloudWatch Alarmを作成しようとしたときに情報が全然なかったので整理します。Serverless FrameworkではSQSはサポートしていないため、CloudFormationで記述することになります。そしてSQS CloudWatchメトリクスについてはここにまとまっています。
各パラメータは上記記事のdescriptionを読めば大体分かるのですが、Dementionsだけがよく分かりません。
The only dimension that Amazon SQS sends to CloudWatch is QueueName. This means that all available statistics are filtered by QueueName.
困ってAWSコンソールを見たり試行錯誤してみたのですが、結論を言うとこういうことでした。
これの意味が全く分からなかったのだけれども、
— Keita Software Engineer (@w_keita_1023) 2023年1月6日
Dimensions: [
{
Name: "QueueName",
Value: "${queueName}",
},
]
ということらしい。 pic.twitter.com/z1T53nWQEo
今回はDLQに1件キューが追加されたときのアラームを作成したかったので、こんな感じになりました。
DLQ: { Type: "AWS::SQS::Queue", Properties: { QueueName: "DLQ.fifo", FifoQueue: true, ContentBasedDeduplication: true, }, }, DLQAlarm: { Type: "AWS::CloudWatch::Alarm", Properties: { AlarmName: "alarm", Namespace: "AWS/SQS", MetricName: "ApproximateNumberOfMessagesVisible", Threshold: 1, Statistic: "Sum", Period: 300, EvaluationPeriods: 1, DatapointsToAlarm: 1, ComparisonOperator: "GreaterThanOrEqualToThreshold", AlarmActions: ["${DLQAlarmTopic.arn}"], Dimensions: [ { Name: "QueueName", Value: "DLQ.fifo", }, ], }, }, DLQAlarmTopic: { Type: "AWS::SNS::Topic", Properties: { TopicName: "${AlarmTopicName}", }, }