代码之家  ›  专栏  ›  技术社区  ›  jbuddy_13

如何获取所有云形成导出Boto3

  •  -1
  • jbuddy_13  · 技术社区  · 2 年前

    我对如何使用Boto3感到困惑 list_exports method .

    response = client.list_exports(
        NextToken='string'
    )
    

    NextToken(字符串)——一个字符串(由ListExports响应输出提供),用于标识您要求检索的下一页导出的输出值。

    示例响应语法

    {
        'Exports': [
            {
                'ExportingStackId': 'string',
                'Name': 'string',
                'Value': 'string'
            },
        ],
        'NextToken': 'string'
    }
    

    没有明确说明的是1/缺少NextToken参数是可以接受的,2/必须重复调用该方法,直到返回所有值。

    def get_all_exports(stack):
        map_ = {}
        client = boto3.client('cloudformation')
        response = client.list_exports()
        next_ = response['NextToken']
        helper(response, map_, stack)
    
        while next_ != '':
            response = client.list_exports(NextToken=next_)
            helper(response, map_, stack)
    
        return map_ 
    
    
    def helper(response, map_, stack):
        for ex in response['Exports']:
            if ['ExportingStackId'] == stack:
                key = ex['Name']
                val = ex['Value'] 
                map_[key] = val  
    

    它有效!但这似乎是一种巨大的痛苦。难道没有更简单的方法吗?

    0 回复  |  直到 2 年前
        1
  •  1
  •   rlhagerm    2 年前

    是的,您可以使用您所描述的令牌,但也有 paginators 添加以帮助进行这些操作。您会发现它们通常单独列在“寻呼器”下的服务标题下。似乎有一个 listing exports here 。如果不传入分页器的配置,它将遍历所有项。

    要使用分页器,请在客户端上使用get_paginator,如下所示:

    paginator = client.get_paginator(
                "list_exports"
            )
            for page in paginator.paginate(
                <your code here>
            ):
    
    推荐文章