Во-первых,
item['Instances'][0]['BlockDeviceMappings'][0]['Ebs']['AttachTime']
не должно быть списком.Это элемент в документации здесь , а также элемент в JSON, возвращаемый следующей командой aws cli:
aws --region us-east-1 ec2 describe-instances
Я подозреваю, что при удалении последнего [0]
из
item['Instances'][0]['BlockDeviceMappings'][0]['Ebs']['AttachTime'][0]
строка кода успешно завершается, и list index out of range
вызывается из последующей итерации цикла for.
Трудно понять, почему без выполнения кода, но, например,Экземпляр без томов, таких как , в этом случае вызовет сбой этой строки.
Вы можете выполнить отладку следующим образом, чтобы проверить поврежденные данные:
try:
create_time = item['Instances'][0]['BlockDeviceMappings'][0]['Ebs']['AttachTime'].strftime("%A, %d. %B %Y %I:%M%p")
except Exception as e:
import pdb; pdb.set_trace()
Или это если нетприкреплен к оболочке:
try:
create_time = item['Instances'][0]['BlockDeviceMappings'][0]['Ebs']['AttachTime'].strftime("%A, %d. %B %Y %I:%M%p")
except Exception as e:
print("Dumping offending item:")
print(item)
raise e
Во-вторых, хотя AttachTime
может быть подходящим для вашего случая использования, это не обязательно время, когда том был создан, так как они могут быть созданы, а затем присоединены кпример.Если вам нужно фактическое время создания, вам нужно сделать второй вызов description_volume_status и использовать поле CreateTime
.