gpt4 book ai didi

python - 获取已终止的 EC2 实例的 ID

转载 作者:行者123 更新时间:2023-12-01 04:09:05 25 4
gpt4 key购买 nike

我正在尝试创建一份有关 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

这意味着已终止实例的指标确实存在,但您必须拥有这些实例的 ID 才能检索它们。 有办法检索已终止的实例 ID 吗?

最佳答案

除非您启用了 CloudTrail,否则不会。您可以从 CloudTrail 仪表板获取过去 7 天内所需的信息。如果您需要 7 天之前的信息,请从 S3 存储桶获取文件(如果您已配置)。

CloudTrail 定期将您的事件存储为存储桶中的对象 - 检查您的 CloudTrail 配置中的存储桶名称。每天的数据存储为压缩的 json 文件。编写一个简单的 Python 脚本来下载您想要的当天的文件并逐一加载 json 文件,查找 TermminateInstances 事件。对于每个终止的实例,它都会有诸如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

关于python - 获取已终止的 EC2 实例的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com