Магазин параметров 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

Другие вопросы по тегам