1

有没有办法只删除/删除 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]'
4

5 回答 5

5

当您需要在 AWS Systems Manager Parameter Store 中按路径删除所有参数并且有超过 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

以下使用AWS CLI 分页选项的 Bash 脚本按路径从 AWS SSM Parameter Store 中删除任意数量的参数:

#!/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
于 2020-03-21T17:40:15.113 回答
4

您可以get-parameters-by-path结合delete-parameters

aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --query Parameters[].Name --output text`

我通过创建两个参数来测试它,然后运行上面的命令。它通过参数成功删除。

于 2018-09-11T04:24:13.453 回答
1

试试这个并执行多次

aws ssm delete-parameters --names `aws ssm get-parameters-by-path --path / --recursive --query Parameters[].Name --output text --max-items 9`
于 2021-05-04T17:34:25.403 回答
0

这是我的单行解决方案:

$ 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

注意:如果您复制并粘贴此内容,请小心,因为它会删除“/”下的所有内容

于 2020-06-08T11:10:55.383 回答
0

补充以上。我不得不从参数存储中删除大约 400 个参数。在命令行中运行以下命令,它做到了!(将 for 循环中的 45 更改为您喜欢的任何数字);

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
于 2021-12-06T07:34:38.843 回答