定時關閉AWS上的EC2機器實例


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

至此,就大功告成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM