如何通过使用boto传递卷ID查找ec2实例ID

时间:2019-04-03 07:10:51

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

我想将卷ID作为参数传递,然后在python中返回实例ID

2 个答案:

答案 0 :(得分:1)

您需要致电describe_instances()

您可以使用Python自己过滤结果,也可以为Filters传递block-device-mapping.volume-id

import boto3

ec2_client = boto3.client('ec2', region_name='ap-southeast-2')

response = ec2_client.describe_instances(Filters=[{'Name':'block-device-mapping.volume-id','Values':['vol-deadbeef']}])

instance_id = response['Reservations'][0]['Instances'][0]['InstanceId']

print(instance_id)

一个卷一次只能连接到一个实例,因此此代码假定仅返回一个实例。

答案 1 :(得分:0)

@Rajesh指出,一种更简单的方法是使用DescribeVolumes,它返回Attachment信息:

import boto3

ec2_client = boto3.client('ec2', region_name='ap-southeast-2')

response = ec2_client.describe_volumes(VolumeIds=['vol-deadbeef'])

print(response['Volumes'][0]['Attachments'][0]['InstanceId'])

此代码假定实例是卷上的第一个附件(因为EBS卷只能附加到一个实例)。