タダです.
AWS CLI の SQS に滞留してるメッセージを特定期間中の統計情報を取りたいと思って調査したので備忘録でまとめます.
SQS の滞留数取得
1時間ごとの SQS 滞留メッセージの最大値を取得したいとします.滞留しているメッセージ数は ApproximateNumberOfMessagesVisible なので,AWS CLI で実行するコマンドとして次のように実行しました.--statistics で SampleCount,Average,Sum,Minimum,Maximum のいずれかを指定する必要があり,今回は最大値を取りたいため Maximum を指定します.--start-time と --end-time で期間を YYYY-MM-DDTHH:MM:SSZ 形式で指定し,--period でメトリクスの取得期間を指定します.$((60 * 60)) で指定しているのは1時間の範囲で指定した場合で,この値は任意の値を乗算できます.
aws cloudwatch get-metric-statistics \ --namespace AWS/SQS \ --metric-name ApproximateNumberOfMessagesVisible \ --dimensions Name=QueueName,Value=[SQS名] \ --statistics Maximum \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-02-01T00:00:00Z \ --period $((60 * 60)) \ --query "sort_by(Datapoints,&Timestamp)[][Timestamp,Maximum]" \ --output text
まとめ
CloudWatch の統計情報から SQS のメッセージ滞留数を取得することをAWS CLI で取得したのが初めてだったのでまとめました.