boto3 ec2 中的分页描述实例

rkj*_*rkj 3 python amazon-web-services python-2.7 boto3

我在 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'])
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 5

来自的回应describe_instances()是:

{
    'Reservations': [
        {
            'Groups': [
                {
                    'GroupName': 'string',
                    'GroupId': 'string'
                },
            ],
            'Instances': [
                {
                    'AmiLaunchIndex': 123,
 ...
Run Code Online (Sandbox Code Playgroud)

请注意,响应是:

  • 一本字典
  • 哪里Reservations有一个包含以下内容的列表
    • Instances,这是一个列表

因此,代码确实需要循环遍历所有 Reservations 和实例。

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

您可能需要这样的代码:

{
    'Reservations': [
        {
            'Groups': [
                {
                    'GroupName': 'string',
                    'GroupId': 'string'
                },
            ],
            'Instances': [
                {
                    'AmiLaunchIndex': 123,
 ...
Run Code Online (Sandbox Code Playgroud)