我正在创建一个脚本来查找长时间停止的实例。使用以下命令,我可以找到它停止的日期和时间。
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/