linux - 如何让ec2实例长时间停止

标签 linux bash shell amazon-ec2 aws-cli

我正在创建一个脚本来查找长时间停止的实例。使用以下命令,我可以找到它停止的日期和时间。

aws ec2 describe-instances --region us-west-2 --filters "Name=instance-state-code,Values=80" --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value, State.Name, StateTransitionReason]' --output text | sort -k 6,6

我的任务是查找实例处于停止状态的总天数。

最佳答案

StateTransitionReason 字段只是一个文本字符串。您必须对其进行操作以将其转换为日期,然后对其执行一些日期数学运算。

使用编程语言(例如 Python)可能更容易做到这一点:

import boto3
from datetime import datetime
from datetime import date

client = boto3.client('ec2', region_name='ap-southeast-2')
response = client.describe_instances()

for r in response['Reservations']:
  for i in r['Instances']:
    if i['State']['Code'] == 80:
      transition_timestamp = datetime.strptime(i['StateTransitionReason'][16:39], '%Y-%m-%d %H:%M:%S %Z')
      print (datetime.now() - transition_timestamp).days

但是,它并不是一个 100% 可靠的字段 - 我有一个已停止的实例,其中未填充该字段。

关于linux - 如何让ec2实例长时间停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964120/

相关文章:

linux - 为什么我编译的bash(3.8M)比我的系统提供的bash(937K)大?

c++ - 在 Linux 上分析数据库密集型代码

bash - 查找 ISO-8859-1 编码的文件?

linux - 如何使用 bash 脚本创建空克隆目录作为另一个目录下的子目录

java - 如何通过Java的runtime().exec()方法执行bash for循环

bash - 从文件读取时在 shell 脚本中拆分字符串

linux - ARM 如何在 IRQ 处理程序中切换到 svc 模式?

linux - 从 Apache 中的 CGI 脚本创建时,绑定(bind)挂载不可见

bash - 如何使用 ffmpeg 和 shaka-packager 优化编码和打包视频

shell - linux 文件系统布局-partiton-fdisk