文章出處

最近一段時間在做一個產品從阿里云向亞馬遜云中國區遷移的前期試驗。亞馬遜中國區并沒有開放免費體驗賬號,使用的每一份資源都要實打實的掏錢。而為了實驗我們使用時一般要啟動好幾臺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

至此,就大功告成了。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()