AWS CLI 仅列出当前正在运行的 cloudformation 堆栈的名称?

Posted

技术标签:

【中文标题】AWS CLI 仅列出当前正在运行的 cloudformation 堆栈的名称?【英文标题】:AWS CLI list only the name of current running cloudformation stacks? 【发布时间】:2017-08-31 13:31:52 【问题描述】:

我正在构建一个更大的 AWS CLI 作业,但其中一个构建块让我感到难过;

我如何获取每个当前运行的 AWS Cloudformation 堆栈的名称列表?

我可以使用以下内容很好地列出堆栈,但我无法获得将其与堆栈名称配对的查询。

aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE --output text

我可以在 bash 中减少生成的表格,但如果存在更优雅的 aws 解决方案,我会喜欢它。

【问题讨论】:

【参考方案1】:

您可以将查询参数添加到同一查询中,以将结果集缩小到仅 StackName。

根据@idbehold,您还需要包含除CREATE_FAILEDDELETE_COMPLETE 之外的所有堆栈状态过滤器,以真正捕获所有当前堆栈。这些只需要用空格分隔。

查询:

"StackSummaries[*].StackName"

完整示例:

aws cloudformation list-stacks --stack-status-filter CREATE_IN_PROGRESS CREATE_COMPLETE ROLLBACK_IN_PROGRESS ROLLBACK_FAILED ROLLBACK_COMPLETE DELETE_IN_PROGRESS DELETE_FAILED UPDATE_IN_PROGRESS UPDATE_COMPLETE_CLEANUP_IN_PROGRESS UPDATE_COMPLETE UPDATE_ROLLBACK_IN_PROGRESS UPDATE_ROLLBACK_FAILED UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS UPDATE_ROLLBACK_COMPLETE REVIEW_IN_PROGRESS --query "StackSummaries[*].StackName"

进一步阅读

AWS Documentation - aws cloudformation list-stacks AWS Documentation - Controlling Command Output from the AWS Command Line Interface

【讨论】:

StackSummaries 是那里缺少的关键 - 你怎么知道这是你需要的值,所以我知道下次要找什么? 啊哈,明白了。很高兴知道继续前进,谢谢! 5 分钟结束后我会接受。 @Alex 这不会涵盖所有当前正在运行的 CloudFormation 堆栈。即你的stack-status-filter 应该包括all statuses except 用于CREATE_FAILEDDELETE_COMPLETE。您尤其不想错过状态为 UPDATE_COMPLETE 的堆栈。 AWS CLI 不提供--stack-status-ignore 选项真的太糟糕了。 完成。谢谢@idbehold!【参考方案2】:
    # foreach stack in prod describe stack resources
    while read -r stack ; do \
    echo -e "\nSTART $stack\n" ;\
    aws cloudformation describe-stack-resources --stack-name $stack --profile prd ; \
    echo -e "\nSTOP  $stack \n" ; done \
    < <(aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE \
    --query "StackSummaries[*].StackName" --profile prd \
    | perl -ne 's/\s+/\n/g;print'| sort)

【讨论】:

以上是关于AWS CLI 仅列出当前正在运行的 cloudformation 堆栈的名称?的主要内容,如果未能解决你的问题,请参考以下文章

AWS cli列出未使用的elb

使用 *** 混淆网络流量时,AWS CLI 脚本更改 EC2 的安全组以匹配当前分配的 IP 地址?

获取从 aws cli 运行的 ecs 任务的外部链接

使用 aws cli 获取环境的运行状况很热门

运行任何 aws CLI 命令时出现错误“您必须指定一个区域”

AWS S3策略限制用户仅列出存储桶中的某些文件夹