【发布时间】:2018-07-01 10:22:41
【问题描述】:
我运行它来获取我的 CF 堆栈列表:
aws cloudformation list-stacks --region us-east-1
我似乎得到了相同堆栈的多个结果。我似乎返回每个堆栈的每个版本?如何只为每个堆栈获得一个结果?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation aws-cli
我运行它来获取我的 CF 堆栈列表:
aws cloudformation list-stacks --region us-east-1
我似乎得到了相同堆栈的多个结果。我似乎返回每个堆栈的每个版本?如何只为每个堆栈获得一个结果?
【问题讨论】:
标签: amazon-web-services amazon-cloudformation aws-cli
是什么让您认为它返回重复的堆栈名称?有超过 100 个堆栈吗?以下内容应仅给出堆栈名称并应包含最新版本。
aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[].StackName'
或获取堆栈状态:
aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[].[StackName,StackStatus]' --output text
仅获取具有运行堆栈的堆栈:
--stack-status-filter CREATE_COMPLETE
欲了解更多信息:aws cloudformation list-stacks
您可以在--query 中使用 JMESPATH 来排除某些状态下的堆栈。最简单的方法是使用grep。
aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[].[StackName,StackStatus]' --output text | grep -v DELETE_COMPLETE
排除多个状态:
aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[].[StackName,StackStatus]' --output text | egrep -v 'DELETE_COMPLETE| CREATE_COMPLETE| UPDATE_COMPLETE'
【讨论】:
"DELETE_COMPLETE" 我如何仅获取当前正在运行的堆栈?
status != DELETE_COMPLETE
aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[?starts_with(StackStatus, `DELETE_COMPLETE`) != `true`].[StackName,StackStatus]' --output text
CloudFormation 中没有堆栈版本的概念。 aws cloudformation list-stacks 不返回重复的堆栈。
发生的情况是您可能有许多堆栈共享相同的名称。例如,您可以创建一个名为“Stack1”的堆栈,将其删除,然后创建一个同名的新堆栈“Stack1”。这 2 个堆栈将具有不同的 ID,但会在调用 list-stacks 时出现。第一个堆栈的状态为DELETE_COMPLETE,并且具有与第二个堆栈不同的 ID。
【讨论】: