Я использую Lambda для запуска через свою учетную запись AWS, возвращая список всех экземпляров. Мне нужно иметь возможность распечатать все значений VolumeId, но я не могу понять, как получить к ним доступ, поскольку они вложены. Я могу распечатать first VolumeId для каждого экземпляра, однако некоторые экземпляры имеют несколько томов, а некоторые только один. Я думаю, я знаю, почему я получаю эти результаты, но я не могу понять, что делать, чтобы вернуть их все.
Вот фрагмент кода JSON для одного экземпляра:
{
'Groups':[],
'Instances':[
{
'AmiLaunchIndex':0,
'ImageId':'ami-0',
'InstanceId':'i-0123',
'InstanceType':'big',
'KeyName':'nonprod',
'LaunchTime':'date',
'Monitoring':{
'State':'disabled'
},
'Placement':{
'AvailabilityZone':'world',
'GroupName':'',
'Tenancy':'default'
},
'PrivateDnsName':'secret',
'PrivateIpAddress':'1.2.3.4',
'ProductCodes':[
],
'PublicDnsName':'',
'State':{
'Code':80,
'Name':'stopped'
},
'StateTransitionReason':'User initiated',
'SubnetId':'subnet-1',
'VpcId':'vpc-1',
'Architecture':'yes',
'BlockDeviceMappings':[
{
'DeviceName':'/sda',
'Ebs':{
'AttachTime':'date',
'DeleteOnTermination':True,
'Status':'attached',
'VolumeId':'vol-1'
}
},
{
'DeviceName':'/sdb',
'Ebs':{
'AttachTime':'date'),
'DeleteOnTermination':False,
'Status':'attached',
'VolumeId':'vol-2'
}
}
],
Вот что я делаю, чтобы получить первый VolumeId:
ec2client = boto3.client('ec2')
ec2 = ec2client.describe_instances()
for reservation in ec2["Reservations"]:
for instance in reservation["Instances"]:
instanceid = instance["InstanceId"]
volumes = instance["BlockDeviceMappings"][0]["Ebs"]["VolumeId"]
print("The associated volume IDs for this instance are: ",(volumes))
Я думаю, причина того, что я получаю только первый идентификатор, заключается в том, что я ссылаюсь на первый элемент в «BlockDeviceMappings», но я не могу понять, как получить другие. Если я попробую это без указания [0], я получу ошибку list indices must be integers or slices, not str
. Я тоже пытался использовать словарь вместо списка, но мне показалось, что я ошибся с этим деревом. Будем благодарны за любые предложения / помощь!