有时在做技术调研时,会短时间用一下EC2机器。为了避免忘记关闭导致的费用浪费,希望能让EC2能在一段时间后自动终止。
本EC2实例所属region和id可以通过访问本机的metadata信息(http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)获得。
可以编写55分钟(3300秒)后,自动关机的脚本如下
运行此脚本的IAM用户,需要有终止实例的权限,于是
关键点:
IAM角色,user-data,CLI,metadata
方案:
本机已运行时间能根据 /proc/uptime 获得。本EC2实例所属region和id可以通过访问本机的metadata信息(http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)获得。
可以编写55分钟(3300秒)后,自动关机的脚本如下
#!/bin/sh
UPTIME=`cat /proc/uptime | awk -F. '{print $1}'`
REGION=`curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk '{print $3}' | tr -d "\""`
INSTANCEID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
if [ $UPTIME -gt 3300 ] ; then
aws ec2 terminate-instances --region $REGION --instance-ids $INSTANCEID
fi
运行此脚本的IAM用户,需要有终止实例的权限,于是