hicloud CVPC / CaaS API 教育訓練 (hicloud Web Service, HWS) 雲端運算研究所 2017/02/14
議程主題 HWS 介紹 如何開始? (REST 版) 開發者中心使用說明文件 申請 Access Key signature 計算的方式 目前提供的服務 HWS 功能列表 雲伺服器說明文件 共通參數 版本 申請 Access Key signature 計算的方式 使用 hws-signature Java函式取得驗證碼 自行運算出 signature 透過 java SDK 來執行 CaaS API 場景 範例
HWS 介紹 hicloud CaaS API (HWS) 開發者中心: 開發者可透過兩種方式使用 CaaS API https://hws.hicloud.hinet.net/hws-doc/ 開發者可透過兩種方式使用 CaaS API 透過REST(Representational State Transfer) API發送請求,呼叫欲操作的API與行為。 透過SDK,目前針對 Java 開發者用戶提供 Java SDK,提升 Java 應用程式開發的便利性。
如何開始? (REST 版) 於開發者中心瀏覽API說明文件,並了解如何發送REST請求 由CloudBOSS UP申請一組API金鑰 到UP去申請用戶唯一的一組使用金鑰(Access Key)與加密用的私密金鑰(Secret Key)。 於API開發者平台瀏覽關於計算簽名的方式或下載計算簽名方法的Java SDK 在API使用的說明文件中,瀏覽如何將URI參數計算簽名(signature)的方法。使用Java的開發者亦可下載具計算方法的SDK(software development kits)。 於開發者中心瀏覽API說明文件,並了解如何發送REST請求 在API使用說明文件中,瀏覽各API的內容細節說明,其中包含請求參數、回應參數與範例。 對於如何發送REST請求亦有詳細的說明。 開始使用API 撰寫發送REST請求,來呼叫Hicloud CaaS等各種API服務。 API REST服務呼叫網址 hws.hicloud.hinet.net
開發者中心使用說明文件
REST 開發者中心
目前提供的服務
HWS 功能列表 (1/3) 雲伺服器 雲伺服器監控 負載平衡 儲存空間 runInstances terminateInstances rebootInstances startInstances stopInstances describeInstances modifyInstanceAttribute restoreInstance getDefaultPd 雲伺服器監控 getInstancesStats 負載平衡 createLoadBalancerPolicy deleteLoadBalancerPolicy describeLoadBalancerPolicies replaceLoadBalancerPolicy querySlbVIPHealthStatus 儲存空間 createVolume deleteVolume attachVolume detachVolume describeVolumes
HWS 功能列表 (2/3) 防火牆 範本 快照 子網段 createNetworkAcl deleteNetworkAcl replaceNetworkAcl describeNetworkAcls 範本 createImage deleteImage describeImages modifyImageAttribute 快照 createSnapshot deleteSnapshot describeSnapshots modifySnapshotAttribute 子網段 createSubnet deleteSubnet describeSubnets
HWS 功能列表 (3/3) CVPC軟體資料中心 內網路由 CVPC 網際網路連線 createVpc createIntranetGateway deleteIntranetGateway describeIntranetGateways modifyIntranetGatewayAttribute createIntranetLink deleteIntranetLink describeIntranetLinks modifyIntranetLinkAttribute CVPC軟體資料中心 createVpc deleteVpc describeVpcs modifyVpcAttribute CVPC 網際網路連線 createInternetGateway deleteInternetGateway describeInternetGateways createInternetIp deleteInternetIp describeInternetIps
雲伺服器說明文件
startInstances
共通參數 http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/vm/parameter_frame.html 參數 說明 action 要執行的API指令,如: startInstances, stopInstances version 指令版本,目前最新版本:2016-11-23,建議使用最新的 chtAuthType 認證機制,需填 hwspass expires 該呼叫時間失效的時間點,採用ISO8601時間格式為YYYY-MM-DDThh:mm:ssZ,如2017-01-11T06:30:04Z accessKey 客戶所分配到之accessKey signature 驗證碼,驗證該呼叫是否合法
版本 http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/version.html
申請 Access Key (1/8)
申請 Access Key (2/8)
申請 Access Key (3/8)
申請 Access Key (4/8)
申請 Access Key (5/8)
申請 Access Key (6/8)
申請 Access Key (7/8) 此為 Access Key 的內容。 點擊後可檢視 Secret Key 的內容。
申請 Access Key (8/8) 將兩把金鑰記錄下來,以便計算簽名與發送REST請求。 此為 Secret Key 的內容。
參數 以 stopInstances 為例 共通參數 stopInstances 參數 version=2016-11-23 chtAuthType=hwspass accessKey=ACCESSKEY expires=2016-12-28T15:36:31Z signature=#{signature} stopInstances 參數 action=stopInstances instanceId=BV550200010001 共通參數: http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/vm/parameter_frame.html stopInstances: http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/vm/actions/stopInstances.html
signature 計算的方式 相關說明文件請參考 Signature程式範例 http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/tutorial/howto-gen-signature.html 網頁內容分成兩部份 使用 hws-signature Java函式取得驗證碼 自行運算出 signature
透過 REST 工具來執行 hws 命令 把剛才產生好的 hws 命令,透過 REST 工具執行 使用 HTTP GET 傳輸 https://hws.hicloud.hinet.net/cloud_hws/api/hws/?action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV550200010001&accessKey=ACCESSKEY&expires=2016-12-28T15%3A36%3A31Z&signature=zl9*lFTN8qWn6YYECIrA2I5gm08 使用 HTTP GET 傳輸 剛產生好完整 HWS 命令 此工具是 firefox 和它的 addons REST Client 執行命令後的回傳結果
使用 hws-signature Java函式取得驗證碼 先到 REST 開發者中心下載 Signature產生工具 http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/index.html
輸出結果 hwsRest = https://hws.hicloud.hinet.net/cloud_hws/api/hws/?action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV55020001036W&accessKey=ACCESSKEY&expires=2016-12-29T10%3A19%3A57Z hwsRestWithSignature = https://hws.hicloud.hinet.net/cloud_hws/api/hws/?action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV55020001036W&accessKey=ACCESSKEY&expires=2016-12-29T10%3A19%3A57Z&signature=FXIHSt0JmoHUtyC3sA05VNoOXH0
自行運算出 signature 以 stopInstances 為例 原始的指令參數 action=stopInstances version=2016-11-23 chtAuthType=hwspass instanceId=BV550200010001 accessKey=ACCESSKEY expires=2016-12-28T15:36:31Z 用 REST 下的格式,各參數需用 UTF-8 URI encoder 編碼過,並用 & 做連接 action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV550200010001&accessKey=ACCESSKEY&expires=2016-12-28T15%3A36%3A31Z 參考: http://hws.hicloud.hinet.net/hws-doc/zh_TW/rest/vm/actions/stopInstances.html
驗證碼產生的方式 (1/2) 以UTF-8 URI Decode 格式將參數進行解碼。 原字串 2016-12-28T15%3A36%3A31Z 解碼後的字串 2016-12-28T15:36:31Z 依據鍵值進行參數排序,重新組合指令內容 以 "&" 符號串接 accessKey=ACCESSKEY&action=stopInstances&chtAuthType=hwspass&expires=2016-12-28T15:36:31Z&instanceId=BV550200010001&version=2016-11-23 將指令內容中的大寫均轉換為小寫 accesskey=accesskey&action=stopinstances&chtauthtype=hwspass&expires=2016-12-28t15:36:31z&instanceid=bv550200010001&version=2016-11-23
驗證碼產生的方式(2/2) 搭配Secret Key並使用HMAC SHA-1加密演算法將指令內容進行加密,進一步透過Base64編碼方式將加密結果進行編碼 編碼結果中可能包含URL之三個特殊字元("+", "/", "="),取代此三個特殊字元後即為驗證碼(signature) signature=zl9*lFTN8qWn6YYECIrA2I5gm08 原特殊字元 取代字元 "+" "*" "/" "-" "=" "" (空字元)
拆解上列呼叫實例 重組 hws 指令,分成三部份 服務平台網址(basic url) 指令內容 驗證碼 (signature) https://hws.hicloud.hinet.net/cloud_hws/api/hws/? 指令內容 action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV550200010001&accessKey=ACCESSKEY&expires=2016-12-28T15%3A36%3A31Z 驗證碼 (signature) &signature=zl9*lFTN8qWn6YYECIrA2I5gm08
完整指令 最後完整指令 https://hws.hicloud.hinet.net/cloud_hws/api/hws/?action=stopInstances&version=2016-11-23&chtAuthType=hwspass&instanceId=BV550200010001&accessKey=ACCESSKEY&expires=2016-12-28T15%3A36%3A31Z&signature=zl9*lFTN8qWn6YYECIrA2I5gm08
透過 java SDK 來執行 (1/2)
透過 java SDK 來執行 (2/2) [DEBUG 2016-12-29 11:24:16,603 (main) (HwsDemo.java:134)] - runInstancesResult=StopInstancesResponse [statusMap={BV55020001036W=vm_stopping}]
CaaS API 場景
案例說明-OO軟體測試公司 案例說明-OO軟體測試公司 透過多台測試控制器主機模擬從網際網路針對受測系統主機進行網站耐壓程度、穩定度檢測,並找出其性能指標。 每次為期3-10天的測試。 測試完畢後產生測試報告予客戶。 OO軟測專案建置方式:透過hicloud CaaS API將已安裝測試軟體的虛擬主機進行環境的快速建置部屬。 http://blog.miniasp.com/post/2012/10/18/How-to-do-Web-Load-Test.aspx
重複建置專案環境 測試控制器環境建置 hicloud CaaS API runInstances describeInstances terminateInstances 複製VM 不動產網站 查詢VM複製好了沒 BV550200102BB ……. 用完後退租VM
重複建置專案環境demo 快速複製專案環境降低成本 安全掃描,弱點分析 安全掃描,弱點分析 客戶C: 報名網站 安全掃描,弱點分析 ……. ……. 安全掃描,弱點分析 可靠度測試,可用度測試 ……. 客戶B: 線上書店 OO軟體測試公司 客戶A: 不動產網站
案例說明-XX證券公司 案例說明-XX證券公司 利用多台主機進行交易作業,每日每台主機IP皆不可相同,每台主機僅使用於當日上午八點至下午兩點。 每日定時申請,定時退租。 每日需使用20-40組主機。 XX證券專案建置方式:每日定時呼叫hicloud CaaS API供裝虛擬主機,並定時退租。
定時申退租 專案環境建置 hicloud CaaS API runInstances describeInstances StartInstance terminateInstances 複製VM 查詢VM複製好了沒 不動產網站 VM開機 BV550200102BB ……. 用完後退租VM
定時產生主機環境demo 每天早上七點自動申租20台VM 每天下午兩點自動退租所有VM 精準掌握VM用量 快速部屬環境 省時省錢真方便!! ……. 精準掌握VM用量 快速部屬環境 省時省錢真方便!!
案例說明-YY訂票網站公司 秒殺型 合約這樣訂型 應該要賣一陣子型 余天演唱會 五月天演唱會 嘖~這樣看不起偶! 應該要賣一陣子型 余天演唱會 網站流量不預期在何時會增加,即便有增加亦不會有爆衝的可能發生 秒殺型 五月天演唱會 歹勢,人帥真的有差! 合約這樣訂型 網站並無爆衝流量,但為求瀏覽品質的穩定,需維持一定服務水平,自動延展服務主機。
合約這樣訂型 SLA hicloud CaaS API CPU 每日平均使用率大於60% 持續1天,需scale out createLoadBalancerPolicy GetInstancesStats runInstances replaceLoadBalancerPolicy StartInstance StopInstance terminateInstances 建立負載平衡服務 查cpu , men 使用率是否過高 複製VM 將VM IP加入SLB VM開機 SLB 查cpu , men 使用率是否過低 VM關機 約15分鐘Scale完成 VM退租 將VM IP移出SLB
要賣一陣子型 SLA hicloud CaaS API CPU 每小時平均使用率大於60% 持續1小時 還是來看一下啦~ 要賣一陣子型 SLA hicloud CaaS API createLoadBalancerPolicy runInstances replaceLoadBalancerPolicy GetInstancesStatus startInstance CPU 每小時平均使用率大於60% 持續1小時 建立負載平衡服務 複製VM(不開機) 將VM IP加入SLB 查cpu , men 使用率是否過高 SLB 約1分鐘Scale完成 VM開機(此時才加入服務)
秒殺型 時間到備妥足夠的 虛擬主機就是了!!! SLB
開發或使用能發出REST請求的Http Client程式 步驟說明 最後,開始使用API開發您的應用程式 請善加利用hicloud Web Services說明文件,內有共通參數說明與錯誤代碼等資訊,能加速您的應用程式開發。 發送帶有簽名的REST請求API 服務 開發或使用能發出REST請求的Http Client程式 使用秘密金鑰計算得到簽名字串
範例 [CaaS] 建立負載平衡來做分流的功能 2 loadBalancerPolicy instance 1 instance 2 1-1 1-2
範例 [CVPC] 建立簡易型負載平衡來做分流的功能 1 CVPC 4 internetGateway 2 subnet 5 internetIp 3-1 3-2 instance 1 instance 2 6 loadBalancerPolicy
範例 [CVPC] 建立軟體資料中心 (CVPC) action=createVpc version=2016-11-23 chtAuthType=hwspass vpcName=vpcName regionId=region-tw-1
範例 [CVPC] 建立子網段 action=createSubnet version=2016-11-23 chtAuthType=hwspass vpcBusinessServiceId=vpcBusinessServiceId subnetName=vpcSubnetName01 subnet=192.168.1.0/24
範例 [CVPC] 建立 IntranetLink ,用於接取指定VPC平台與內網路由閘道器,使其相互連通 action=createIntranetLink version=2016-11-23 chtAuthType=hwspass vpcBusinessServiceId=vpcBusinessServiceId intranetLinkName=internetGatewayName01 intranetGatewayBusinessServiceId=UG55020001IOS2
範例 [CVPC]建立CVPC 網際網路連線 action=createInternetGateway version=2016-11-23 chtAuthType=hwspass vpcBusinessServiceId=vpcBusinessServiceId name=internetGatewayName01
範例 [CVPC] 建立指定區域的內網路由閘道器 action=createIntranetGateway version=2016-11-23 chtAuthType=hwspass regionId=region-tw-1 intranetGatewayName=intranetGatewayName01
範例 [CVPC] 建立簡易型負載平衡 action=createIntranetGateway version=2016-11-23 chtAuthType=hwspass economyLoadBalancerVIPRouteDirection=0 ipProtocolVersion=0 ipSubnetBusinessServiceId=VQ55020001IOSQ loadBalancerType=0 portsInfo=0;;53;;0;;;;0 ripsInfo=10.27.1.1 userAssignIp=210.61.223.21 vpcBusinessServiceId=VV55020001IOSE
範例 [CaaS] 採用公用範本申請雲伺服器 (create vm from public image) action=runInstances version=2016-11-23 chtAuthType=hwspass imageId=hi-0fd07aee instanceType=HC1.S.LINUX monitoringEnabled=true instanceName=hwsCaasVm01 count=1 regionId=region-tw-1
範例 [CVPC] 採用公用範本申請雲伺服器 (create vm from public image) action=runInstances version=2016-11-23 chtAuthType=hwspass imageId=hi-0fd07aee instanceType=HC5.S.LINUX monitoringEnabled=true instanceName=hwsVpcVm01 count=1 vpcBusinessServiceId=VV55020001IOSE vnic1SubnetBusinessServiceId=VQ55020001IOSQ
範例 [CVPC] 採用公用範本申請雲伺服器 ,並指定 ip action=runInstances version=2016-11-23 chtAuthType=hwspass imageId=hi-0fd07aee instanceType=HC5.S.LINUX monitoringEnabled=true instanceName=hwsVpcVm01 count=1 vpcBusinessServiceId=VV55020001IOSE vnic1SubnetBusinessServiceId=VQ55020001IOSQ vnic1UserAssignIp=172.23.0.20
範例 [CaaS] 採用雲伺服器複製雲伺服器 (clone vm from vm) action=runInstances version=2016-11-23 chtAuthType=hwspass instanceId=BV55010001IOUI instanceType=HC1.S.LINUX monitoringEnabled=true instanceName=vpchws count=1
範例 [CaaS] 採用用戶範本複製雲伺服器 (create vm from template) action=runInstances version=2016-11-23 chtAuthType=hwspass imageId=BT550100010001 instanceType=HC1.S.WIN instanceName=myInstance
範例 [CaaS] 列出雲伺服器 action=describeInstances version=2016-11-23 chtAuthType=hwspass businessTag=cb168f20-c515-4e41-84cd-830dedfe7f49
範例 [CVPC] 列出雲伺服器 action=describeInstances version=2016-11-23 chtAuthType=hwspass businessTag=cb168f20-c515-4e41-84cd-830dedfe7f49 vpcBusinessServiceId=VV550100000001
謝謝聆聽
申租虛擬機 回傳訂單 uuid 新申租之訂單