Karakuri.com

ベンチャー企業で働くソフトウェアエンジニアの技術録

CloudFormationでAmazon SQS metricsのDimensionsは何を書けばいいのか?

スポンサーリンク

Serverless FrameworkでSQSのCloudWatch Alarmを作成しようとしたときに情報が全然なかったので整理します。Serverless FrameworkではSQSはサポートしていないため、CloudFormationで記述することになります。そしてSQS CloudWatchメトリクスについてはここにまとまっています。

docs.aws.amazon.com

各パラメータは上記記事のdescriptionを読めば大体分かるのですが、Dementionsだけがよく分かりません。

The only dimension that Amazon SQS sends to CloudWatch is QueueName. This means that all available statistics are filtered by QueueName.

困ってAWSコンソールを見たり試行錯誤してみたのですが、結論を言うとこういうことでした。

今回は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}",
  },
}