使用 boto3 列出 100 多个堆栈

Posted

技术标签:

【中文标题】使用 boto3 列出 100 多个堆栈【英文标题】:Listing more than 100 stacks using boto3 【发布时间】:2017-01-06 19:13:38 【问题描述】:

我们需要列出所有处于 CREATE_COMPLETE 状态的堆栈。在我们的 AWS 账户中,我们有超过 400 个这样的堆栈。我们为此编写了以下代码:

stack_session = session.client('cloudformation')
list_stacks = stack_session.list_stacks(StackStatusFilter=['CREATE_COMPLETE'])

但是,这仅列出了前 100 个堆栈。我们想知道如何获得所有的堆栈?我们正在使用 python boto3 库。

【问题讨论】:

【参考方案1】:

我使用分页来完成这项工作。我写的代码如下:

stack_session = session.client('cloudformation')
paginator = stack_session.get_paginator('list_stacks')
response_iterator = paginator.paginate(StackStatusFilter=['CREATE_COMPLETE'])
for page in response_iterator:
    stack = page['StackSummaries']
    for output in stack:
        print output['StackName']

这打印了我们需要的所有 451 个堆栈。

【讨论】:

以上是关于使用 boto3 列出 100 多个堆栈的主要内容,如果未能解决你的问题,请参考以下文章

boto3 ecs客户端分页问题

如何列出所有未使用的弹性IP并使用boto3释放它们

使用 boto3 列出存储桶的内容

python 使用boto3列出正在运行的EC2实例的示例

Boto3 CloudFormation 状态

有没有办法使用带有多个前缀的 boto3 分页器?