无法使用boto对EMR集群进行分页

1 投票
2 回答
1880 浏览
提问于 2025-04-18 02:18

我有大约55个EMR集群(它们都已经被终止了),我一直在尝试使用list_clusters方法从boto中获取这55个EMR集群的全部信息。我在网上找了很多关于如何处理boto结果集分页的例子,但都没有找到合适的。根据这个说法:

emr_object.list_clusters(cluster_states=["TERMINATED"], marker="what_should_i_use_here").clusters

我一直收到InvalidRequestException的错误:

boto.exception.EmrResponseError: EmrResponseError: 400 Bad Request
<ErrorResponse xmlns="http://elasticmapreduce.amazonaws.com/doc/2009-03-31">
  <Error>
    <Type>Sender</Type>
    <Code>InvalidRequestException</Code>
    <Message>Marker 'what_should_i_use_here' is not valid.</Message>
  </Error>
  <RequestId>555b91bd-c122-11e3-8e31-abc75abdb39d</RequestId>
</ErrorResponse>

我应该在marker参数中提供什么,以便我可以正确地进行查询的分页呢?

谢谢!

2 个回答

0

你第一次可以传入None。

如果你得到的ClusterListResult里面有一个叫做marker的属性,那么你之后可以把它传入,比如:

m=None
while True:
    try:
        cluster_list_result=emr_object.describe_jobflows(states=['TERMINATED'], marker=m)
        .... Do whatever with cluster_list_result.clusters
        m=cluster_list_result.marker  # See if there are more
    except AttributeError:
        break
0

我试过用

emr_object.describe_jobflows(states=["TERMINATED"])

这个方法可以正常工作!它会返回所有的聚类。

撰写回答