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_FAILED
和DELETE_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_FAILED
和DELETE_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 脚本更改 EC2 的安全组以匹配当前分配的 IP 地址?