aws簡單開發之ec2定時開關機

環境:ubuntu14.04 

boto3 python開發包


需求:

aws的ec2實例是按需收費的, 是按需收費的,不用的時候不收費。 我用ec2主要是用來翻牆的。 所以對我來說一天有將近一半的時間ec2是閒置空轉的狀態。 而閒置的時候又要被aws計時收費。 所以我就想能不能通過aws提供的api, 來實現定時開關機,從而減少不必要的費用。

 

需求一: 在晚上10:00~第二天早上10:00這段時間, 將ec2實例自動關機, 早上10:00~晚上10:00 這段時間ec2自動開機

需求二: 通過與微信公衆號聯動,發送對應指令, 讓ec2實例實現即時開機/關機, 滿足不時之需。


步驟:

  1. 需要先在 https://console.aws.amazon.com/iam/home?#users  生成一個用戶(假設這個用戶爲test)的id和secret,用於開發, 記下來,後面會用到


2. 給test用戶添加管理策略,AmazonEC2FullAccess ,賦予改用戶操作ec2的所有權限


3. 安裝boto3模塊, pip install boto3.

 

4. 開發之前,要爲boto3添加相關配置用於對aws進行操作, 配置內容如下


Alternatively, you can create the credential file yourself. By default, its location is at ~/.aws/credentials:

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

You may also want to set a default region. This can be done in the configuration file. By default, its location is at ~/.aws/config:

[default]
region=us-east-1

5. 編寫程序,附上代碼sample


sample-start-ec2.py

# coding=utf8

ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}])
for ins in instances:
    ins.start() # 啓動ec2實例

sample-stop-ec2.py

# coding=utf8

ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(
    Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
for ins in instances:
    ins.stop()  # 停止ec2實例

sample-check-ec2.py
# coding=utf8
ec2 = boto3.resource('ec2')
for status in ec2.meta.client.describe_instance_status()['InstanceStatuses']:
    print status  # 檢查ec2實例的狀態
6. 設置定時任務, 定時執行上述腳本

補充:
與微信公衆號的聯動
設計好對應的關鍵詞,如aws-start,發送對應關鍵詞的時候觸發腳本。

關於安全性的建議: 
關鍵詞最好設置的複雜一些,不常用一些,最好能隨機生成,主要是因爲目前未認證的公衆號做不到一號專用,其它用戶也會發送一些關鍵詞,如果他們發送的關鍵詞剛好是你設計好aws重啓的關鍵詞,會造成一些不必要的麻煩。當然最好的方法是增加一層權限控制, 限制某些命令只有某些用戶執行纔有效,目前還沒有找到方法。 以後再嘗試。

想像一下,打開微信就能查看ec2實例的狀態 ,能啓動,關閉ec2實例, 是多麼有趣的事情啊。
更多好玩的玩法, 值得探索!

參考文檔:

boto3 文檔  https://boto3.readthedocs.org/en/latest/guide/migrationec2.html  

關於aws cli 的使用 http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html 


------------------------------------------------------------------------------------------------

作者: hackstoic 文章首發在鄙人個人網站:www.hackstoic.com 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章