最近一段时间在做一个产品从阿里云向亚马逊云中国区迁移的前期试验。亚马逊中国区并没有开放免费体验账号,使用的每一份资源都要实打实的掏钱。而为了实验我们使用时一般要启动好几台EC2实例。为了不浪费辛辛苦苦赚的钱,特写了一个脚本,在每天晚上6点将所有的EC2实例自动关闭。由于在亚马逊云中关闭的EC2实例是不收费的,只收取少量的存储费用,所以这样节省不少钱。

为了让一台机器可以值守这个任务,所以我们在AWS留一台机器用来定期执行关闭其它机器的命令。关闭EC2的命令主要是使用AWS提供了awscli来实现。

首先在这台机器上安装awscli。这台机器使用的操作系统是ubuntu 12.04,所以使用其自带的包管理器可以一键安装。

1
$ apt-get install awscli

安装完毕后需要配置aws命令行工具的认证。方式有很多,最简单的是运行aws configure来实现。

1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: YOURACCESSKEY
AWS Secret Access Key [None]: YOURSECRTKEY
Default region name [None]: cn-north-1
Default output format [None]: json

或者你可以在当前用户根目录下的.aws目录中配置认证信息,详情请移步http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html.

接下来在当前用户根目录下创建stopinstance.sh文件,并输入以下信息.

stopinstance.sh
1
2
#!/bin/bash
aws ec2 stop-instances --instance-ids i-68726951 i-965ca276 i-377a620e i-d35fa133 i-fe5ca21e

这就是关闭指定EC2实例的命令,--instance-ids后面跟的就是你的EC2实例的id。

把该文件权限改为可执行。

1
$ chmod +x stopinstance.sh

最后要让该命令定时执行,那么就要借助crontab这个命令了。

使用crontab -e来编辑batch文件,在文件最后加上下行.

1
* 18 * * * ~/stopinstance.sh >> ~/shutdown.log

前五个字段制定命令执行的时间。第一个是分钟,第二个是小时,第三个是每月的哪天,第四个是月份,第五个是每周的哪天。配置相当灵活。

这句话是描述了一个batch任务,在每天的下午6点执行,会执行stopinstance.sh脚本,并把日志输出到shutdown.log文件中。

注意使用crontab执行任务时一定要注意当前机器的时区和你期望执行的时间所用时区是否不同。有关crontab和cron命令的进一步使用请移步http://www.adminschoice.com/crontab-quick-reference

至此,就大功告成了。

定时关闭AWS上的EC2机器实例的更多相关文章

  1. 使用本地计划任务定时关闭azure虚拟机

    本文包含以下内容 前提条件 如何实现定时关闭虚拟机 前提条件 Controller 机器上必须安装 Azure PowerShell,并且要在 PowerShell 里登录一次 Azure, 请参见: ...

  2. 使用Windows的mstsc远程桌面连接到Ubuntu图形界面(AWS上安装的Ubuntu系统)

    参考文档:https://blog.csdn.net/liumaolincycle/article/details/50052619 https://www.cnblogs.com/eczhou/p/ ...

  3. 修复AWS上EC2损坏的sshd_config文件

    常识: AWS是没有root用户的,登陆也都是通过SSH KEY完成授权认证. 背景: 正在AWS上搭一个CI (GO),与gitlab,为了将其进行集成,需将gitlab的deploy key设置成 ...

  4. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  5. 关于aws上ec2机型的种类总结汇总

    在aws上ec2的机型是非常多的,但主要的种类为如下几种 General Purpose  (通用型)                                                 ...

  6. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  7. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  8. 利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶

    一.准备!!! 1.使用拥有足够权限的IAM账号登录AWS控制台 2.创建S3存储桶,给存储桶命名如"my-bucket"(如果使用已有存储桶,本步骤可略过) 3.有该S3存储桶访 ...

  9. 震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

    案发现场 昨天晚上突然短信收到 APM (即 Application Performance Management 的简称),我们内部自己搭建了这样一套系统来对应用的性能.可靠性进行线上的监控和预警的 ...

随机推荐

  1. ilspy导致c# dll代码被窃取

    不得不放弃.net框架的任何开发!!!微软现在太蛋疼了!!! 不得不放弃.net框架的任何开发!!!微软现在太蛋疼了!!! 不得不放弃.net框架的任何开发!!!微软现在太蛋疼了!!! 不得不放弃.n ...

  2. 读写SD

    public class SD_Files_RW extends Activity implements OnClickListener{ private String Text_of_input; ...

  3. Zip压缩和解压缩

    这个功能完全依靠一个第三方的类,ICSharpCode.SharpZipLib.dll,只是在网上搜了大半天,都没有关于这个类的详细解释,搜索的demo也是各种错误,感觉作者完全没有跑过,就那么贸贸然 ...

  4. Map中的entry

    是java中的一个对象,一般可以通过map.entrySet()得到.1,entrySet实现了Set接口,里面存放的是键值对.一个K对应一个V.2,用来遍历map的一种方法.Set<Map.E ...

  5. 发现的eval的一个小问题

    首先我们来看五段代码: 第一段代码: function test(){ eval('var a = 1;'); alert(a); } test(); 第二段代码: function test(){ ...

  6. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  7. mysql字段类型

    会安装mysql,会几条sql语句,会jdbc,会hibernate配置,以为就会mysql了,最近几天面试被问到mysql的问题,无地自容,系统的学习一下. mysql优化之一,选择合适的而不是最大 ...

  8. 算法入门笔记------------Day1

    1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值 2.三位数反转:输入一个三位数,分离它的百位,十位和个 ...

  9. 访问控制public/protected/private的区别

    Java支持四种不同的访问权限: 修饰符 说明 public 共有的,对所有类可见. protected 受保护的,对同一包内的类和所有子类可见. private 私有的,在同一类内可见. 默认的 在 ...

  10. activity管理

    public class MainApp extends Application { private static ArrayList<WeakReference<Activity> ...