Получить идентификаторы завершенных инстансов EC2

Я пытаюсь создать отчет об использовании и использовании наших инстансов EC2 с течением времени. Я хотел бы изучить все экземпляры, которые работали или работали в моей среде в течение последних X дней. В рамках отчета я хотел бы включить экземпляры, которые были созданы во время масштабирования группы, но позже были прерваны при масштабировании группы.

Используя простой скрипт python с boto3, я могу получить список экземпляров для региона:

session = Session(aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, region_name=self.name)
ec2 = session.resource('ec2')
cloudwatch = session.resource('cloudwatch')

Путем перечисления экземпляров с помощью следующей команды я не вижу завершенных экземпляров через несколько часов (вероятно, в то же время, когда вы перестаете видеть их на панели инструментов):

ec2.instances.all()

Используя cloudwatch, когда я использую следующую команду, я вижу показатели для завершенных экземпляров:

metric = cloudwatch.Metric('AWS/EC2', 'CPUUtilization')
result = metric.get_statistics(
Dimensions=[{'Name': 'InstanceId', 'Value': instanceId}],
        StartTime=timeRange.start,
        EndTime=timeRange.end,
        Period=300,
        Statistics=['Average'],
) # This returns a complete list of data points for the instance was live

Это означает, что метрики существуют для завершенных экземпляров, но у вас должен быть идентификатор этих экземпляров, чтобы их получить. Есть ли способ получить идентификаторы завершенных экземпляров?


person Avi    schedule 04.02.2016    source источник


Ответы (1)


Нет, если у вас не включен CloudTrail. Вы можете получить необходимую информацию за последние 7 дней на панели управления CloudTrail. Если вам нужна информация старше 7 дней, то получите файлы из корзины S3 (если вы настроили).

CloudTrail периодически сохраняет ваши действия в виде объектов в вашем сегменте - проверьте свою конфигурацию CloudTrail на предмет имени сегмента. Данные хранятся в виде сжатых файлов json на каждый день. Напишите простой скрипт Python, чтобы загружать файлы на нужный вам день и загружать файл json один за другим, ищите событие TerminatedInstances. Для каждого завершенного экземпляра у него будет такая информация, как instanceid, кто его завершил, откуда, когда и т. Д.

Фрагмент кода:

for event in events:
    if event['eventName'] == 'TerminateInstances':
        inst_ids = [item['instanceId'] for item in event['requestParameters']['instancesSet']['items']]
        print 'Terminated instance IDs:', inst_ids
person helloV    schedule 04.02.2016
comment
Спасибо привет. Я никогда раньше не использовал CloudTrail и вижу, что он регистрирует вызовы API. Включает ли это вызовы AWS? В частности - действия, которые выполнялись автоматически из-за политик увеличения / уменьшения масштаба? - person Avi; 04.02.2016
comment
да. Все API. Я широко им пользуюсь. - person helloV; 04.02.2016