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

时间:2014-04-11 03:55:47

标签: python pagination boto emr

我有大约55个EMR集群(所有集群都被终止)并且一直在尝试使用 boto 中的 list_clusters 方法检索整个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>

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

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试

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

它有效!此方法返回所有集群。

答案 1 :(得分:0)

你可以第一次传入无。

如果你回来的ClusterListResult有一个标记属性,那么你可以在以后传递它,例如。

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