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-path
与 delete-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
是否可以直接核对/删除 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-path
与 delete-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