如何在boto3中使用list_stacks查找堆栈并对其进行过滤?

时间:2018-12-10 16:14:09

标签: boto3 boto

如何在boto3中使用list_stacks来找到一个名为test-logging-9823492834的堆栈,该堆栈的数目是随机的?

我的尝试

for stack in qa.cfn.list_stacks().filter(Prefix='test-logging'):
  print('{0}:{1}'.format(stack.name, stack.key))

AttributeError: 'dict' object has no attribute 'filter'

1 个答案:

答案 0 :(得分:0)

在boto3中,list_stacks()函数没有用于stack_names的过滤方法。

客户端只有两个选项, 其中只能基于StackStatus过滤输出:

response = client.list_stacks(NextToken='string',StackStatusFilter='option')

上述调用的响应只会返回StackSummaries的字典:

{
    'StackSummaries': [
        {
            'StackId': 'string',
            'StackName': 'string',
            'TemplateDescription': 'string',
            'CreationTime': datetime(2015, 1, 1),
            'LastUpdatedTime': datetime(2015, 1, 1),
            'DeletionTime': datetime(2015, 1, 1),
            'StackStatus': 'CREATE_IN_PROGRESS'|'CREATE_FAILED'|'CREATE_COMPLETE'|'ROLLBACK_IN_PROGRESS'|'ROLLBACK_FAILED'|'ROLLBACK_COMPLETE'|'DELETE_IN_PROGRESS'|'DELETE_FAILED'|'DELETE_COMPLETE'|'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',
            'StackStatusReason': 'string',
            'ParentId': 'string',
            'RootId': 'string',
            'DriftInformation': {
                'StackDriftStatus': 'DRIFTED'|'IN_SYNC'|'UNKNOWN'|'NOT_CHECKED',
                'LastCheckTimestamp': datetime(2015, 1, 1)
            }
        },
    ],
    'NextToken': 'string'
}

因此,对于您的用例,您将需要在Python中循环+过滤response['StackSummaries']字典,而不是使用boto3查找选项。

编辑 在这里可以完美使用的选项是describe_stacks,它将返回有关特定堆栈的信息。   look here

希望这可以澄清。