AWS SSM 参数存储

Har*_*rts 1 amazon-web-services aws-cli aws-sdk aws-kms aws-ssm

无论如何,是否可以直接删除/删除 AWS 参数存储中的所有项目?

我找到的所有命令行都是将它一个一个地删除,或者给定一个名称列表将其删除。

我也尝试使用

aws ssm delete-parameters --cli-input-json test.json
Run Code Online (Sandbox Code Playgroud)

与 test.json 文件看起来像这样

{
    "Names": [
        "test1",
        "test2"
    ]
}
Run Code Online (Sandbox Code Playgroud)

还是不行。。

理想情况下,如果我可以使用 --query 并按原样使用它,那就太好了。

我正在使用 --query 像这样

aws ssm get-parameters-by-path --path / --max-items 2 --query 'Parameters[*].[Name]'
Run Code Online (Sandbox Code Playgroud)

Evg*_*yst 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
Run Code Online (Sandbox Code Playgroud)

以下使用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
Run Code Online (Sandbox Code Playgroud)

  • 如果要删除该级别以下的所有参数,则需要在 get-parameters-by-path 中添加 --recursive 。如果起始路径是“/”,它将删除从那里开始的所有内容。另外,如果使用多个 AWS 配置文件,请不要忘记将“--profile {profile-name}”添加到脚本中的每个“aws ssm”调用中,否则您将删除默认配置文件中的所有内容。 (2认同)