漫遊ECS API
ECS API已經於4月3日進行了一次重大更新。除了原有的基礎管理功能如實例管理、安全組管理之外,此次又開放了如下的功能:
- 創建按量付費的雲服務器實例
- 創建磁盤、快照和鏡像等資源
- 接入了RAM資源授權服務,支持賬號之間的資源授權
接下來,我們開始漫遊體驗ECS API的新功能,完成以下三個任務:
- 配置環境
- 創建一個實例
- 創建快照和自定義鏡像
一、配置環境
我們使用一個簡單的python腳本來體驗ECS的功能,你不需要懂得如何編寫python代碼,隻要完成四個簡單的準備任務:
- 安裝好python環境,需要python 2.7版本
- 下載ecs.py這個小腳本, 通過簡單的命令行操作,來調用ECS的API
- 獲取你的阿裏雲賬號的accesskeyid/accesskeysecret密鑰對
- 下載ECS API文檔
第一步,請安裝python 2.7版本。Windows/Linux/MacOS等操作係統中如何安裝本文不再描述。
第二步,從這裏的鏈接https://aliyunecs.oss.aliyuncs.com/tools/ecs.py 下載地址下載ecs.py腳本,在windows下打開終端命令行工具來執行命令,在linux和mac下使用終端來執行。接下來,我們以linux為例,在終端裏執行
$ chmod +x ./ecs.py
加上執行權限後使用更加方便。
第三步,訪問https://i.aliyun.com/access_key,點擊“創建AccessKey”創建一個accesskeyid/accesskeysecret密鑰對。請保存這個密鑰對,這是非常重要敏感的信息,絕不能泄漏。
接下來,在終端中直接執行ecs.py這個腳本,可以看到它的幫助信息,我們首先需要將剛剛獲取到的密鑰對配置好。使用以下命令來進行配置:
$./ecs.py config --id=<access key id> --secret=<access key secret>
配置完成後,可以執行列出可用地域(Region)命令來驗證是否配置成功:
$./ecs.py DescribeRegions
如果配置的密鑰對沒有問題,那麼這個命令會輸出一個json格式的結果,包含了杭州(cn-hangzhou)和青島(cn-qingdao)兩個地域的信息。
第四步,從https://help.aliyun.com/list/11114696.html下載ECS API文檔,作為後續使用的參考。
二、創建實例
前置條件:要創建按量付費的雲服務器,您的賬戶餘額必須至少有100元的現金。接下來我們完成以下任務:
- 創建一個安全組
- 創建一個雲服務器實例
- 分配公網IP地址
- 增加一塊磁盤
- 啟動新創建的實例
1. 創建安全組
ECS的每個實例至少要歸屬到一個安全組中,所謂的安全組,是由同一個地域內具有相同安全保護需求並相互信任的實例組成。加入到同一個安全組的實例彼此之間是互相信任的,安全組的防火牆規則對他們都生效。
$ ./ecs.py CreateSecurityGroup description="Test-API" regionid=cn-qingdao
如果沒有報錯,輸出結果類似以下,就是執行成功了。
{
“RequestId”: “7472C411-08E9-41C7-A20B-BA33E2AA5E7B”,
“SecurityGroupId”: “G69d5027e-85e4-45cb-a6a5-c1a4de77fab8″
}
2. 創建實例
創建實例前,有幾個選擇要做:1)創建到哪個地域?2)選擇什麼配置 3)使用哪個鏡像?4)加入到哪個安全組? 5)是否需要公網帶寬?使用固定帶寬還是按流量付費?6)設置Root密碼
本次的API隻能用於創建按量付費的雲服務器實例,對一些限製可以在https://help.aliyun.com/view/11108189_13545434.html看到具體的信息。
我們將在青島地域創建一個ecs.s2.small(2CPU 2GB內存) 的雲服務器實例,選擇ubuntu12.04操作係統,加入到剛剛創建的安全組,選擇按流量付費的方式,最大容許10Mbps的公網帶寬。命令如下:
$./ecs.py CreateInstance RegionId=cn-qingdao
InstanceType=ecs.s2.small
ImageId=ubuntu1204_64_20G_security_v01.vhd
InternetChargeType=PayByTraffic
InternetMaxBandwidthOut=10
SecurityGroupId=剛剛創建的安全組ID
InstanceName=api-test
Password=your-password
命令執行後,如果沒有報錯,會有類似如下的json結果輸出,代表執行成功:
{
“InstanceId”: “AY140404124925248f45″,
“RequestId”: “024E0224-8B12-4099-897E-F717CF43332C”,
}
此時,實例已經創建成功,想查看它的屬性,執行
$./ecs.py DescribeInstanceAttribute InstanceId=剛創建成功的實例ID
可以看到它的Status是Stopped狀態,我們還需要再進行一些配置才會啟動實例。
3.分配公網IP地址
我們剛創建好的實例是不包含IP地址的,想要增加公網IP地址,請執行命令:
$./ecs.py AllocatePublicIpAddress InstanceId=剛創建成功的實例ID
輸出如下則為成功
{
“IpAddress”: “42.96.194.117″,
“RequestId”: “46C20C19-93E8-4CCE-853C-5F26241A7EDA”
}
4. 增加一塊數據盤
剛剛創建的雲服務器是沒有數據盤的,我們調用AddDisk這個命令增加一塊100GB的數據盤:
$./ecs.py AddDisk InstanceId=剛創建成功的實例ID Size=100
{
“DiskId”: “6002-20107932″,
“RequestId”: “5E859722-D05A-4FE2-B7B1-F1F20FA10C12″
}
5. 啟動實例
這個時候,我們可以啟動實例,執行:
$./ecs.py StartInstance InstanceId=剛剛創建成功的實例ID
{
“RequestId”: “09F57060-739C-409F-9907-78FECEC33E46″
}
沒有消息就是好消息,這個時候,再調用DescribeInstanceAttribute就可以看到實例的Status是Starting,幾分鍾後,實例會啟動好,可以SSH遠程連接或者通過控製台的“連接管理終端”連接上去。
三、創建快照和自定義鏡像
快照是一個磁盤上的數據在某一個時間點的拷貝。自定義鏡像是實例可選擇的運行環境模板,一般包括操作係統和預裝的軟件。隻有係統盤的快照可以製作成自定義鏡像。
首先使用DescribeInstnaceDisks這個API查看係統盤的ID:
$./ecs.py DescribeInstanceDisks InstanceId=剛創建成功的實例ID
如果你按照第二步中的步驟執行,那麼輸出結果中應當有兩塊磁盤,其中Type標識為System的就是係統盤。
用以下命令創建係統盤的快照:
$./ecs.py CreateSnapshot InstanceId=剛創建成功的實例ID DiskId=係統盤的ID SnapshotName=my-sys-snapshot
創建成功後會輸出SnapshotID。快照的生成過程需要一些時間,你可以通過下麵的命令查看快照的進度:
$./ecs.py DescribeSnapshotAttribute RegionId=cn-qingdao SnapshotId=剛剛創建的SnapshotId
{
“CreationTime”: “2014-04-04T05:39Z”,
“Progress”: “73″,
“RequestId”: “783D64E0-5193-433A-9615-26390783DE68″,
“SnapshotId”: “6002-20107931-4969987″,
“SnapshotName”: “my-sys-snapshot”
}
其中的Progress即為進度的百分比。
當Progress達到100時,就可以使用這個快照來創建自定義鏡像了。使用以下的命令來創建自定義鏡像:
$./ecs.py CreateImage RegionId=cn-qingdao SnapshotId=創建成功的SnapshotId Description=my-image
{
“ImageId”: “md5079e28-3b58-48eb-af0a-3da8dcbe56be.vhd”,
“RequestId”: “F7E07872-2859-4D50-A223-FEE748DBCFB4″
}
此時,這個新的ImageId,就可以用於創建新的實例了。
我們的漫遊到此就結束了。你還可以更進一步,對照API文檔,完成以下的任務:
- 查看所有可用的鏡像:DescribeImages
- 列出安全組(DescribeSecurityGroups),並且為安全組加一個授權規則(AuthorizeSecurityGroups),隻容許公網的22和80端口來訪問實例
- 試試快照和磁盤的其他功能
如果你想自己去編寫代碼調用ECS API,那麼這個鏈接裏的內容,可以幫你簡化簽名加密的工作https://docs.aliyun.com/?WWw71,可以找到Java/PHP/C#/Python的示例代碼。
阿裏雲產品團隊
最後更新:2017-04-03 12:56:08