我正在尝试使用 python boto3 列出 aws ECS 集群中的所有集群,它最多只能列出 100 个集群,我想要 300 个集群

Posted

技术标签:

【中文标题】我正在尝试使用 python boto3 列出 aws ECS 集群中的所有集群,它最多只能列出 100 个集群,我想要 300 个集群【英文标题】:I am trying to list all cluster in aws ECS cluster using python boto3, it can only list 100 cluster maximum and i want 300 cluster 【发布时间】:2020-10-14 19:45:10 【问题描述】:

session = boto3.Session()

client = session.client('ecs')

cluster = client.list_clusters()

clusterArns = cluster["clusterArns"]
print(clusterArns)
for i in clusterArns:
    print(i.split('/')[1])

【问题讨论】:

【参考方案1】:

如果有任何其他结果页面,响应将包含nextToken

如果在响应中返回,则需要再次运行 client.list_clusters() 并传入此参数以获取下一页。

单个页面的MaxResults 只能在 1 到 100 之间,因此无法增加返回的最大项目数。

您可以从文档中找到有关 list_clusters 函数的更多信息。

【讨论】:

import boto3 from pprint import pprint client = boto3.client('ecs') response = client.list_clusters(maxResults=100) pprint (response['clusterArns']) next_token = response['nextToken' ] paginator = client.get_paginator('list_clusters') response_iterator = paginator.paginate( cluster="testlist", PaginationConfig= 'MaxItems': 100, 'PageSize': 100, 'StartingToken': next_token ) for i in response_iterator: pprint (i['serviceArns']) 回溯(最近一次调用最后一次):文件“test_6.py”,第 7 行,在 next_token = response['nextToken'] KeyError: 'nextToken' 这意味着该响应中不存在nextToken。请先尝试if "nextToken" in response: 进行验证。 但是在 boto3 文档中,他们说作为回报,给出 nextToken 值。但是当我得到响应时,没有出现 nextToken 值。为什么?返回响应语法 'clusterArns': [ 'string', ], 'nextToken': 'string' 'clusterArns': [], 'ResponseMetadata': 'RequestId': '1979ebfb-69aa-4213-abf5-75b345a41f08', 'HTTPStatusCode': 200, 'HTTPHeaders': 'x -amzn-requestid':'1979ebfb-69aa-4213-abf5-75b345a41f08','content-type':'application/x-amz-json-1.1','content-length':'18','date': '星期三,2020 年 6 月 24 日 12:57:34 GMT','RetryAttempts':0 我只得到这个。

以上是关于我正在尝试使用 python boto3 列出 aws ECS 集群中的所有集群,它最多只能列出 100 个集群,我想要 300 个集群的主要内容,如果未能解决你的问题,请参考以下文章

需要用于 ECS 帮助的 Python Boto3

boto3 ecs客户端分页问题

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

使用boto3 Python SDK返回AWS EC2可用性区域属性

无法使用 boto3 创建策略

boto3 iam 客户端:按名称获取策略