我正在尝试从 SSM 的清单中删除已终止的托管节点,但找不到任何方法可以通过 CLI 或 SDK 来执行此操作。目前,当我运行命令
aws ssm get-inventory
时,结果列表包含以下模式的许多条目:
{
"Id": "i-0ffeeb0756265c10f",
"Data": {
"AWS:InstanceInformation": {
"TypeName": "AWS:InstanceInformation",
"SchemaVersion": "1.0",
"CaptureTime": "2022-09-09T05:11:53Z",
"Content": [
{
"InstanceId": "i-0ffeeb0756265c10f",
"InstanceStatus": "Terminated"
}
]
}
}
}
这些实例也不会显示在 AWS 控制台的托管节点中。有没有办法从 SSM 清单中删除这些已终止的实例?非常感谢!
aws ssm get-inventory
可以使用--filters。
键=字符串,值=字符串,字符串,类型=字符串
给你:
键=实例状态,值=已终止,类型=NotEqual
所以这样的事情应该有效:
aws ssm get-inventory --filters Key=InstanceStatus,Values=Terminated,Type=NotEqual
这正是我从文档这里得到的。我还没有尝试过,所以可能需要一些调整。
过滤器适合这种语法:
aws ssm get-inventory --filters '[{"Key":"AWS:InstanceInformation.InstanceStatus","Values":["terminated"],"Type":"NotEqual"}]'
ssm 中仍然终止的实例是一个问题。如果你有很多这样的东西(可能有),就会导致速率限制。
aws ssm get-inventory
An error occurred (ThrottlingException) when calling the GetInventory operation (reached max retries: 2): Rate exceeded