【问题标题】:Using boto3 to retrieve groups of ec2 instance objects from ec2 resource使用 boto3 从 ec2 资源中检索 ec2 实例对象组
【发布时间】:2018-03-11 20:19:17
【问题描述】:

问题描述:

从特定的 aws 区域,我需要分组运行实例对象的列表(例如 10 个组)。我正在使用如下服务资源过滤器。

ec2_service_resource = boto3.resource('ec2', region)

results = ec2_service_resource.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}], MaxResults=10)

根据 boto3 文档,我应该能够使用 NextToken 从第一次调用的响应中检索下一组结果。 (https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.ServiceResource.instances)

问题:

我无法在响应对象中找到 NextToken 字符串。我错过了什么吗?有没有办法使用 ec2 资源对象来实现这一点?

【问题讨论】:

  • 您有超过 10 个实例吗?
  • 是的。它是一个生产帐户,因此预计实例数量会更高,并且只会随着时间的推移而增加。

标签: amazon-web-services amazon-ec2 boto3


【解决方案1】:

我观察到调用 (ec2_service_resource.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}], MaxResults=10)) 返回一个可迭代对象ec2 实例数,仅计为 MaxResults 参数中指定的 10 个实例对象。

但是,当我们不断迭代这个可迭代对象时,boto3 会默默地对 AWS 进行额外的 API 调用并获取下一批 (10) 个实例。 我可以确认这里不需要 NextToken,因为迭代可迭代对象会自动使下一个数据在响应中可用。

在这种情况下,NextToken 字符串似乎没用。不知道为什么 boto3 在文档中有这种误导性信息。

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2019-10-19
    • 1970-01-01
    • 2020-09-30
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2017-01-14
    相关资源
    最近更新 更多