过滤器 Boto3 "client.describe_volumes"响应



我正在尝试使用Boto3从一些EBS卷中提取数据,特别是:'Device', 'InstanceId'和'AvailabilityZone'。

这是我的代码:

import boto3
AWS_REGION = "us-east-1"
client = boto3.client('ec2', region_name=AWS_REGION)

volume_id_list = ['vol-02e15c9d70exxxxx', 'vol-0bbcb1b0e98xxxxx'] 

for vol_id in volume_id_list:
response = client.describe_volumes(
VolumeIds=[
vol_id,
],
)
print(response)

我得到以下响应,尽管数据在那里,但由于格式的原因,我无法提取它:

{'Volumes': [{'Attachments': [{'AttachTime': datetime.datetime(2022, 11, 23, 18, 18, 9, tzinfo=tzutc()), 'Device': '/dev/xvda', 'InstanceId': 'i-xxxxxxxxxxx', 'State': 'attached', 'VolumeId': 'vol-02e15c9xxxxxxx', 'DeleteOnTermination': True}], 'AvailabilityZone': 'us-east-1a', 'CreateTime': datetime.datetime(2022, 11, 23, 18, 18, 9, 713000, tzinfo=tzutc()), 'Encrypted': False, 'Size': 8, 'SnapshotId': 'snap-xxxxxxxxxxx', 'State': 'in-use', 'VolumeId': 'vol-xxxxxxxxxxx', 'Iops': 100, 'VolumeType': 'gp2', 'MultiAttachEnabled': False}], 'ResponseMetadata': {'RequestId': 'xxxxxxx-eb66-4be9-a2c6-0xxxxxxxxx', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'xxxxxx-eb66-4be9-a2c6-xxxxxxxx', 'cache-control': 'no-cache, no-store', 'strict-transport-security': 'max-age=31536000; includeSubDomains', 'content-type': 'text/xml;charset=UTF-8', 'content-length': '1201', 'date': 'Wed, 07 Dec 2022 17:07:50 GMT', 'server': 'AmazonEC2'}, 'RetryAttempts': 0}}

是否有一种方法来过滤响应,所以我只能接收'设备','InstanceId'和'AvailabilityZone'?

Thanks in advance

当然可以@John Rotenstein,这是完整的答案:

我是这样得到我需要的数据的:

import boto3
AWS_REGION = "us-east-1"
client = boto3.client('ec2', region_name=AWS_REGION)

volume_id_list = ['vol-02e15c9d70exxxxx', 'vol-0bbcb1b0e98xxxxx'] 

for vol_id in volume_id_list:
response = client.describe_volumes(
VolumeIds=[
vol_id,
],
)
device = response['Volumes'][0]['Attachments'][0]['Device']
instance = response['Volumes'][0]['Attachments'][0]['InstanceId']
az = response['Volumes'][0]['AvailabilityZone']
print(device)
print(instance)
print(az)

最新更新