簡體   English   中英

Boto3 獲取 EC2 實例的卷

[英]Boto3 get EC2 instance's volume

我正在嘗試使用 boto 3 獲取 aws 實例的 volume-id 列表,我正在獲取某種集合管理器,但我不知道如何獲取其中的數據。

import boto3
ec2 = boto3.resource('ec2', region_name='us-west-2')
instance = ec2.Instance('i-xxxxxx')
volumes = instance.volumes.all()
print volumes

我得到的答案是:

ec2.Instance.volumesCollection(ec2.Instance(id='i-xxxxxx'), ec2.Volume)

我如何使用“ec2.Volume”來獲取卷 ID

謝謝,Cfir。

它只是一個可迭代的對象,所以

for v in volumes:
    print(v.id)

如果您想獲取 id 列表:

l = [v.id for v in volumes]

ec2.Instance.volumesCollection返回一個迭代器

您可以使用這樣的代碼提取卷 ID

volume_id_list=[]
for item in instance.volumes.all():
  volume_id_list.append(item.id)

然后 volume_id_list[0] 包含第一個磁盤,volume_id_list[1] 第二個等等

請參閱https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Instance.volumes

使用 EC2 客戶端:

ec2_client = boto3.client('ec2',
                    aws_access_key_id='XYZ',
                    aws_secret_access_key='XYZ',
                    region_name='us-east-1')
volumes = ec2_client.describe_instance_attribute(InstanceId='i-0b30bea4e05579def',
Attribute='blockDeviceMapping')

例如,您可以簡單地通過迭代來獲取卷 ID 和大小。

for volume in volumes:
    print (volume.id, volume.size)

您也可以使用 cli。 示例我試圖獲取附加的根卷列表

aws ec2 describe-volumes --filters "Name=attachment.device,Values=*sda1" --query "Volumes[*].[VolumeId]"  --output text --profile=my_genius_aws_profile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM