1

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

Использование простого сценария 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() 

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

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 

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

ответ

2

Нет, если у вас нет 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 
+0

Благодаря helloV. Я никогда раньше не использовал CloudTrail, и я вижу, что он регистрирует вызовы API. Включает ли это призывы AWS? В частности - действия, которые произошли автоматически из-за политики масштабирования/уменьшения? – Avi

+0

Да. Все API. Я использую его широко. – helloV

+0

Спасибо большое! ... – Avi

Смежные вопросы