需要用于 ECS 帮助的 Python Boto3

Posted

技术标签:

【中文标题】需要用于 ECS 帮助的 Python Boto3【英文标题】:Python Boto3 for ECS Help needed 【发布时间】:2020-05-29 10:13:34 【问题描述】:

我正在尝试列出我的 AWS ECS 账户中的所有集群。我有大约 13 个集群正在运行。

下面的代码只打印一个集群,而我想打印所有集群。我可以使用for 循环吗?

下面只打印一个集群:

import boto3
client = boto3.client('ecs')
response = client.list_clusters(
    maxResults=50
)
print(response)

下面的for循环不起作用并抛出错误

import boto3
client = boto3.client('ecs')
for response in client.list_cluster():
    print(response)

任何线索都将受到高度赞赏。

【问题讨论】:

我的猜测是您在 API 中查询错误的 AWS 区域。您的 ECS 集群在哪个区域?您在~/.aws/credentials~/.aws/config 中将哪个区域设置为默认区域? 那就是 us-east-2 us-east-2 两者都有吗? 这是我在所有 13 个集群中使用的帐户中唯一的区域 如果你这样做client = boto3.client('ecs', region_name='us-east-2')是否有效? 【参考方案1】:

如果你查看list_clusters api,响应语法是:

 Response Syntax


    'clusterArns': [
        'string',
    ],
    'nextToken': 'string'

这意味着您将返回一个 ARNs 列表 ([]),它们是 AWS 中的唯一资源标识符。

使用describe_clusters api 然后获取描述,正如@jordanm 所说:

import boto3
client = boto3.client('ecs', region_name='us-east-2')
clusters = client.list_clusters(
    maxResults=50
)
clusters_arns = clusters['clusterArns']

clusters_descriptions = client.describe_clusters(
    clusters=clusters_arns
)

for cluster in clusters_descriptions['clusters']:
    print(cluster['clusterName'])

结果类似于:

prod_nam
eu_nam
someothercluster

【讨论】:

以上是关于需要用于 ECS 帮助的 Python Boto3的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Docker 容器 Boto3 IAM 权限

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

使用 boto3 ECS 获得“服务创建不是幂等的”。为啥?

boto3 ecs客户端分页问题

AWS ECS - 如何将任务的执行角色传递给 Boto3?

如何在 boto3 中设置 executionRoleArn 的值?