在 AWS Lambda 函数中使用 Boto3 的 ec2.instancesCollection 获取 EC2 实例时,可能会无限循环,造成函数超时或异常终止。解决该问题的方法是使用分页器(paginator)来获取 EC2 实例,而不是使用集合(collection)。
以下是使用分页器获取 EC2 实例的示例代码:
import boto3
def get_ec2_instances():
ec2 = boto3.client('ec2')
paginator = ec2.get_paginator('describe_instances')
response_iterator = paginator.paginate()
# 处理所有的响应页面
for page in response_iterator:
for reservation in page['Reservations']:
for instance in reservation['Instances']:
# 处理每个实例
print(instance['InstanceId'])
值得注意的是,分页器返回的数据格式与集合不同,因此需要相应地更改代码以处理数据。