【问题标题】:aws cloudformation list-stacks gives me duplicate stacks?aws cloudformation list-stacks 给了我重复的堆栈?
【发布时间】:2018-07-01 10:22:41
【问题描述】:

我运行它来获取我的 CF 堆栈列表:

aws cloudformation list-stacks --region us-east-1

我似乎得到了相同堆栈的多个结果。我似乎返回每个堆栈的每个版本?如何只为每个堆栈获得一个结果?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-cli


    【解决方案1】:

    是什么让您认为它返回重复的堆栈名称?有超过 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" 我如何仅获取当前正在运行的堆栈?
    • coooool 我可以使用布尔值吗? status != DELETE_COMPLETE
    • @red888 我更新的解决方案有一个简单的方法来得到你想要的。
    • 您可以通过更新查询参数来排除被删除的堆栈。您的命令将如下所示:aws cloudformation list-stacks --region us-east-1 --query 'StackSummaries[?starts_with(StackStatus, `DELETE_COMPLETE`) != `true`].[StackName,StackStatus]' --output text
    【解决方案2】:

    CloudFormation 中没有堆栈版本的概念。 aws cloudformation list-stacks 不返回重复的堆栈。

    发生的情况是您可能有许多堆栈共享相同的名称。例如,您可以创建一个名为“Stack1”的堆栈,将其删除,然后创建一个同名的新堆栈“Stack1”。这 2 个堆栈将具有不同的 ID,但会在调用 list-stacks 时出现。第一个堆栈的状态为DELETE_COMPLETE,并且具有与第二个堆栈不同的 ID。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 2018-08-06
      • 2021-03-31
      • 1970-01-01
      • 2019-06-20
      • 2017-10-18
      • 1970-01-01
      • 2019-04-06
      • 2023-03-07
      相关资源
      最近更新 更多