需要用于 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 获得“服务创建不是幂等的”。为啥?