CloudWatchアラーム一覧を表示する

どのリージョンにどんなCloudWatch Alarmがあるのかを知りたかったので、Bashスクリプトを書きました. 利用するツールは、jqとAWS CLIv2の2つ.

#!/usr/bin/env bash

# 利用可能なリージョンを取得
get_regions() {
    aws ec2 describe-regions | jq -r '.Regions[].RegionName'
}

# 指定されたリージョンのアラームを取得し、「リージョン\tアラーム名」というTSV形式で出力
get_alarms() {
    local region="$1"
    aws --region $region cloudwatch describe-alarms | jq --arg REGION "$region" -r '.MetricAlarms[] | [$REGION, .AlarmName] | @tsv'
}

main() {
    for region in $(get_regions); do
        local alarms=$(get_alarms $region)
        if [ -n "$alarms" ]; then
            echo "$alarms"
        fi
    done
}
main $*