閱讀281 返回首頁    go 阿裏雲 go 技術社區[雲棲]


漫遊ECS API

ECS API已經於4月3日進行了一次重大更新。除了原有的基礎管理功能如實例管理、安全組管理之外,此次又開放了如下的功能:

  1. 創建按量付費的雲服務器實例
  2. 創建磁盤、快照和鏡像等資源
  3. 接入了RAM資源授權服務,支持賬號之間的資源授權


接下來,我們開始漫遊體驗ECS API的新功能,完成以下三個任務:

  1. 配置環境
  2. 創建一個實例
  3. 創建快照和自定義鏡像

 

一、配置

我們使用一個簡單的python腳本來體驗ECS的功能,你不需要懂得如何編寫python代碼,隻要完成四個簡單的準備任務:

  1. 安裝好python環境,需要python 2.7版本
  2. 下載ecs.py這個小腳本, 通過簡單的命令行操作,來調用ECS的API
  3. 獲取你的阿裏雲賬號的accesskeyid/accesskeysecret密鑰對
  4. 下載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元的現金。接下來我們完成以下任務:

  1. 創建一個安全組
  2. 創建一個雲服務器實例
  3. 分配公網IP地址
  4. 增加一塊磁盤
  5. 啟動新創建的實例

 

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文檔,完成以下的任務:

  1. 查看所有可用的鏡像:DescribeImages
  2. 列出安全組(DescribeSecurityGroups),並且為安全組加一個授權規則(AuthorizeSecurityGroups),隻容許公網的22和80端口來訪問實例
  3. 試試快照和磁盤的其他功能

 

如果你想自己去編寫代碼調用ECS API,那麼這個鏈接裏的內容,可以幫你簡化簽名加密的工作https://docs.aliyun.com/?WWw71,可以找到Java/PHP/C#/Python的示例代碼。
阿裏雲產品團隊

最後更新:2017-04-03 12:56:08

  上一篇:go 反向代理及如何獲得原始IP
  下一篇:go 二叉樹的鏡像-jobdu-1521