AWS CloudWatch Dashboard 複製
簡単にコピーしたかったのです。
同一アカウント
マネジメントコンソール上で別名で保存が簡単かと思います。
別アカウント
CLI を使います。 jq 使います。
# 複製元のAWSアカウントから DashboardBody を取得 $ aws cloudwatch get-dashboard \ --dashboard-name "sample-dashboard" \ --query 'DashboardBody' > sample-dashboard.json # 複製先のAWSアカウントに対して、取得した JSON でダッシュボード作成 $ aws cloudwatch put-dashboard \ --dashboard-name "sample-dashboard-copy" \ --dashboard-body "$(jq -r . sample-dashboard.json)" { "DashboardValidationMessages": [] }
jq が無い環境では自力で JSON 書式を調整します。
Text Widget で改行使っている等がある場合はその辺りも考慮必要です。 (下記例は考慮していません)
複製してから修正すれば良い訳ですが。
# sed 例 $ aws cloudwatch put-dashboard \ --dashboard-name "sample-dashboard-copy" \ --dashboard-body "$(sed -e 's/\\"/"/g' -e 's/^"//' -e 's/"$//' sample-dashboard.json)"
おまけでワンライナー。
$ aws cloudwatch put-dashboard \ --dashboard-name "sample-dashboard-copy" \ --dashboard-body "$(aws cloudwatch get-dashboard \ --dashboard-name "sample-dashboard" \ --query 'DashboardBody' | jq -r . )"
dashboard-name を同一名にしてしまうと上書きされるので注意です。