如何使用Boto列出所有正在运行的EMR集群?

2024-06-11 14:46:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用boto列出aws帐户中所有正在运行的集群?使用命令行,我可以使用:

aws emr list-clusters --profile my-profile --region us-west-2 --active

但是我想用boto3做同样的事情。但是,以下代码不返回任何群集:

^{pr2}$

结果:

{u'Clusters': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '577f3961-bdc80772f266', 'HTTPHeaders': {'x-amzn-requestid': '577f3961-34e5-11e7-a12a-bdc80772f266', 'date': 'Tue, 09 May 2017 18:28:47 GMT', 'content-length': '15', 'content-type': 'application/x-amz-json-1.1'}}}

Tags: 命令行awsmy集群帐户contentprofileregion
3条回答

这是paginator解决方案。在

import boto3

boto3 = boto3.session.Session(region_name='ap-northeast-2')
emr = boto3.client('emr')

page_iterator = emr.get_paginator('list_clusters').paginate(
    ClusterStates=['RUNNING','WAITING']
)

for page in page_iterator:
    for item in page['Clusters']:
        print(item['Id'])

结果是

^{pr2}$

从文件中:

提供此AWS帐户可见的所有群集的状态。在

意味着您可能无法使用您提供的会话凭据列出这些群集。尝试使用awscli正在使用的凭据,看看它是否有效。在

集群最初处于等待状态,当有作业针对集群运行时,它将变为运行状态。在您的例子中,只有在集群中至少有1个作业在运行时,它才会返回一个Id。在

更改为以下内容:

ClusterStates=['WAITING', 'RUNNING'] 

相关问题 更多 >