boto3EC2 DESCRIBE实例中的分页

问题描述

我在boto3中进行分页时遇到问题,&;无法获取AWS帐户中的所有实例。

仅获取以下实例的50%(2000个左右,因为有4000个)

下面是我的代码

import boto3

ec2 = boto3.client('ec2')

paginator = ec2.get_paginator('describe_instances')
response = paginator.paginate().build_full_result()

ec2_instance = response['Reservations']


for instance in ec2_instance:
    print(instance['Instances'][0]['InstanceId'])

解决方案

来自describe_instances()的响应为:

{
    'Reservations': [
        {
            'Groups': [
                {
                    'GroupName': 'string',
                    'GroupId': 'string'
                },
            ],
            'Instances': [
                {
                    'AmiLaunchIndex': 123,
 ...

请注意,响应为:

  • 词典
  • 其中Reservations是包含以下内容的列表:
    • Instances,列表

因此,代码确实需要遍历所有保留和实例。

目前,您的代码正在循环访问预留(错误地将它们称为实例),然后仅从该预留中检索第一个([0])实例。

您可能需要如下代码:

for reservation in response['Reservations']:
  for instance in reservation['Instances']:
    print(instance['InstanceId'])

相关文章