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

2021-06-27 21:13:37 字數 1689 閱讀 4497

最近一段時間在做乙個產品從阿里雲向亞馬遜雲中國區遷移的前期試驗。亞馬遜中國區並沒有開放免費體驗賬號,使用的每乙份資源都要實打實的掏錢。而為了實驗我們使用時一般要啟動好幾臺ec2例項。為了不浪費辛辛苦苦賺的錢,特寫了乙個指令碼,在每天晚上6點將所有的ec2例項自動關閉。由於在亞馬遜雲中關閉的ec2例項是不收費的,只收取少量的儲存費用,所以這樣節省不少錢。

為了讓一台機器可以值守這個任務,所以我們在aws留一台機器用來定期執行關閉其它機器的命令。關閉ec2的命令主要是使用aws提供了awscli來實現。

首先在這台機器上安裝awscli。這台機器使用的作業系統是ubuntu 12.04,所以使用其自帶的包管理器可以一鍵安裝。

1

$ apt-get install awscli

安裝完畢後需要配置aws命令列工具的認證。方式有很多,最簡單的是執行aws configure來實現。

123

45

$ 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目錄中配置認證資訊,詳情請移步

接下來在當前使用者根目錄下建立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命令的進一步使用請移步

至此,就大功告成了。

AWS的EC2例項建立

在不使用aws嚮導的情況下建立乙個ec2例項 0x01 設定vpc 建立vpc 建立閘道器 建立路由表 劃分子網 檢查配置是否到新的vpc中 1.建立vpc cidr classless inter domain routing無類域間路由 改進了傳統的ipv4位址分類。傳統的ip分類將ip位址直接...

在AWS的EC2上使用root使用者登入

今天嘗試研究亞馬遜的雲主機ec2,遇到了乙個問題,我在xshell連線無法root登入,只能使用ec2 user登入。這是ec2預設的使用者登入的,所以需要切換到root使用者登入,需要先執行 sudo passwd root changing password for user root.new ...

在AWS上建立linux系統EC2使用docker

最近研究將金蝶eas安裝在docker容器中執行,aws上linux系統是自帶了docker的,所以我們可以是很方便的使用.在這裡我們選擇的cent os系統的centos7.0 offical bootable ami 14118d2d,主要的原因是其它的cent os系統我沒有研究出如何安裝圖形...