Итак, у меня есть простой скрипт, который удаляет тревоги Cloudwatch каждый месяц. Однако сегодня я заметил, что не вижу, что JSON объект может быть декодирован с ошибкой.
Причина была проста:
У меня приблизительно 1500 аварийных сигналов с именем в формате ниже
[Production-ALARM]-PING.Node+[10.0.0.0]-MAX-USAGE
Я знаю, что нам нужно добавить '["в начале и"]', чтобы удалить такие имена. Разговор таков: если я запускаю приведенную ниже команду, она выполняется без каких-либо проблем и удаляет соответствующий аварийный сигнал.
aws cloudwatch delete-alarms --alarm-name '["[Production-ALARM]-PING.Node+[10.0.0.0]-MAX-USAGE"]'
Однако, поскольку количество аварийных сигналов достаточно велико, у меня есть список аварийных сигналов как текстовый файл с добавленным '[""]', который я передаю в качестве параметра простому для l oop в bash.
for clAlarmNames in `cat oldCloudwatchAlarms`
do
#echo ${clAlarmNames}
aws cloudwatch delete-alarms --alarm-names "${clAlarmNames}"
done
Формат входного файла: oldCloudwatchAlarms (расширения для файл)
Пример содержимого файла: Ниже приведен пример содержимого
'["[AB:Production-ALARM]-CLI.Node+[10.0.0.1]-Alert"]'
'["[AB:Production-ALARM]-GLI.Node+[10.0.0.2]-Alert"]'
Однако он не удаляет аварийные сигналы, как ожидалось.