AWS SSM 参数存储

AWS SSM Parameters Store

是否可以直接核对/删除 AWS Parameters Store 中的所有项目?

我找到的所有命令行都是将其一一删除或根据名称列表将其删除。

我也试过用

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]'

您可以将 get-parameters-by-pathdelete-parameters 结合使用:

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

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

当您需要通过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

以下 Bash 脚本使用 AWS CLI pagination options 从 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

这是我的单行解决方案:

$ 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`

添加到上面。我不得不从参数存储中删除大约 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