我想将volume id作为参数传递,然后在python中返回实例id
你需要打电话给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)
卷一次只能附加到一个实例,因此此代码假定只返回一个实例。
正如@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卷只能附加到一个实例)。