Estou tentando criar um relatório sobre o uso e a utilização de instâncias do EC2 ao longo do tempo. Gostaria de examinar todas as instâncias que foram ou estavam sendo executadas no meu ambiente nos últimos X dias. Como parte do relatório, gostaria de incluir instâncias que foram criadas durante uma escala em escala de grupo, mas que foram encerradas depois que o grupo foi dimensionado.
Usando um script python simples com boto3
, posso obter a lista de instâncias de uma região:
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')
Ao listar as instâncias usando o comando a seguir, não vejo instâncias terminadas após algumas horas (provavelmente na mesma hora em que você para de vê-las no painel):
ec2.instances.all()
Usando o cloudwatch, quando uso o seguinte comando, vejo as métricas para instâncias terminadas:
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
Isso significa que as métricas existem para instâncias terminadas, mas você precisa ter o id dessas instâncias para recuperá-las. Existe uma maneira de recuperar IDs de instâncias terminadas?