Магазин параметров AWS SSM
Есть ли какой-либо способ уничтожить / удалить все элементы в магазине параметров AWS?
Вся командная строка, которую я нашел, состоит в том, чтобы удалить это или один за другим или удалить это, дав список имен.
Я также пытался использовать
aws ssm delete-parameters --cli-input-json test.json
с файлом test.json выглядит так
{
"Names": [
"test1",
"test2"
]
}
все равно не работает..
В идеале, если бы я мог использовать --query и использовать его как есть, это было бы здорово.
Я использую --query так
aws ssm get-parameters-by-path --path / --max-items 2 --query 'Parameters[*].[Name]'
5 ответов
Вы можете объединить get-parameters-by-path
с delete-parameters
:
aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --query Parameters[].Name --output text`
Я проверил это, создав два параметра и выполнив приведенную выше команду. Он успешно удален по параметрам.
Если вам нужно удалить все параметры по пути в хранилище параметров AWS Systems Manager и имеется более 10 параметров, вам придется иметь дело с разбивкой на страницы. В противном случае команда завершится ошибкой:
An error occurred (ValidationException) when calling the DeleteParameters operation: 1 validation error detected: Value '[/config/application/prop1, ...]' at 'names' failed to satisfy constraint: Member must have length less than or equal to 10
Следующий сценарий Bash, использующий параметры разбивки на страницы в интерфейсе командной строки AWS, удаляет любое количество параметров из хранилища параметров AWS SSM по пути:
#!/bin/bash
path=/config/application_dev/
while : ; do
aws ssm delete-parameters --names $(aws ssm get-parameters-by-path --path "$path" --query "Parameters[*].Name" --output text --max-items 10 $starting_token | grep -v None)
next_token=$(aws ssm get-parameters-by-path --path "$path" --query NextToken --output text --max-items 10 | grep -v None)
if [ -z "$next_token" ]; then
starting_token=""
break
else
starting_token="--starting-token $next_token"
fi
done
Дополнение к вышесказанному. Мне пришлось удалить около 400 параметров из хранилища параметров. Запустил ниже в командной строке, и он сделал это! (Измените 45 в цикле for на любое число, которое вам нравится);
for ((n=0;n<**45**;n++)); do
aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --recursive --query Parameters[].Name --output text --max-items 9`
done
Это мое однострочное решение для этого:
$ for key in $(aws ssm get-parameters-by-path --path "/" --recursive | jq -r '.Parameters[] | .Name' | tr '\r\n' ' '); do aws ssm delete-parameter --name ${key}; done
ПРИМЕЧАНИЕ. Будьте осторожны, если вы скопируете и вставите это, так как он удалит все, что находится под "/"
попробуйте это и выполните несколько раз
aws ssm delete-parameters --names
aws ssm get-parameters-by-path --path / --recursive --query Parameters[].Name --output text --max-items 9