閱讀385 返回首頁    go 財經資訊


調用方式__API參考_高性能計算-阿裏雲

請求結構

服務地址

HPC API的接入地址為:hpc.aliyuncs.com

通信協議

支持HTTP或者HTTPS通道(待確定)。

請求方法

支持HTTP GET方法,這種方法下請求參數包含在請求的URL中。

請求參數

每個請求都需要指定要執行的操作,即 Action 參數(例如 CreateInstance),以及公共請求參數和指定操作所特有的請求參數。

字符編碼

請求及返回結果都使用 UTF-8 字符集進行編碼。

公共參數

公共請求參數

公共請求參數是指每個接口都需要使用到的請求參數。

名稱 類型 是否必須 描述
Format String 返回值的類型,支持 JSON 與 XML。默認為 XML。
Version String API 版本號,為日期形式:YYYY-MM-DD,本版本對應為 2014-05-26。
AccessKeyId String 阿裏雲頒發給用戶的訪問服務所用的密鑰ID。
Signature String 簽名結果串,關於簽名的計算方法,請參見<簽名機製>。
SignatureMethod String 簽名方式,目前支持 HMAC-SHA1。
Timestamp String 請求的時間戳。日期格式按照 ISO8601 標準表示,並需要使用 UTC 時間。格式為YYYY-MM-DDThh:mm:ssZ,例如,2014-05-26T12:00:00Z(為北京時間 2014年5月26日20點0分0秒)。
SignatureVersion String 簽名算法版本,目前版本是 1.0。
SignatureNonce String 唯一隨機數,用於防止網絡重放攻擊。用戶在不同請求間要使用不同的隨機數值
ResourceOwnerAccount String 本次 API 請求訪問到的資源擁有者賬戶,即登錄用戶名。此參數的使用方法,詳見< 借助 RAM 實現子賬號對主賬號的 ECS 資源訪問 >,(HPC 產品目前未支持RAM,請不要使用此參數)

公共返回參數

用戶發送的每次接口調用請求,無論成功與否,係統都會返回一個唯一識別碼 RequestId 給用戶。

返回結果

調用 API 服務後返回數據采用統一格式,返回的 HTTP 狀態碼為 2xx,代表調用成功;返回 4xx 或 5xx 的 HTTP 狀態碼代表調用失敗。調用成功返回的數據格式主要有 XML 和 JSON 兩種,外部係統可以在請求時傳入參數來製定返回的數據格式,默認為 XML 格式。本文檔中的返回示例為了便於用戶查看,做了格式化處理,實際返回結果是沒有進行換行、縮進等處理的。

成功結果

XML示例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--結果的根結點-->
  3. <接口名稱+Response>
  4. <!--返回請求標簽-->
  5. <RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
  6. <!--返回結果數據-->
  7. </接口名稱+Response>

JSON示例:

  1. {
  2. "RequestId": "4C467B38-3910-447D-87BC-AC049166F216",
  3. /* 返回結果數據 */
  4. }

錯誤結果

調用接口出錯後,將不會返回結果數據。調用方可根據返回的錯誤信息來定位錯誤原因。當調用出錯時,HTTP請求返回一個4xx或5xx的HTTP狀態碼。返回的消息體中是具體的錯誤代碼及錯誤信息。另外還包含一個全局唯一的請求ID:RequestId。

簽名機製

HPC 服務會對每個訪問的請求進行身份驗證,所以無論使用 HTTP 還是 HTTPS 協議提交請求,都需要在請求中包含簽名(Signature)信息。ECS 通過使用 Access Key ID 和 Access Key Secret 進行對稱加密的方法來驗證請求的發送者身份。Access Key ID 和 Access Key Secret 由阿裏雲官方頒發給訪問者(可以通過阿裏雲官方網站申請和管理),其中 Access Key ID 用於標識訪問者的身份;Access Key Secret 是用於加密簽名字符串和服務器端驗證簽名字符串的密鑰,必須嚴格保密,隻有阿裏雲和用戶知道。

用戶在訪問時,按照下麵的方法對請求進行簽名處理:

  1. 使用請求參數構造規範化的請求字符串(Canonicalized Query String)
    (a) 參數排序。 按照參數名稱的字典順序對請求中所有的請求參數(包括“公共請求參數”和接口的自定義參數,但不能包括“公共請求參數”中提到的Signature 參數本身)進行排序。
    注:當使用 GET 方法提交請求時,這些參數就是請求 URI 中的參數部分(即 URI 中“?”之後由“&”連接的部分)。
    (b) 參數編碼。 對排序之後的請求參數的名稱和值分別用UTF-8字符集進行URL編碼。編碼的規則如下:

    1. i. 對於字符 A-Z、a-z、0-9 以及字符“-”、“_”、“.”、“~”不編碼;
    2. ii. 對於其他字符編碼成 “%XY” 的格式,其中 XY 是字符對應 ASCII 碼的 16 進製表示。比如英文的雙引號(”)對應的編碼就是 %22 ;
    3. iii. 對於擴展的 UTF-8 字符,編碼成 “%XY%ZA…” 的格式;
    4. iv. 需要說明的是英文空格( )要被編碼是 %20,而不是加號(+)。

    注:該編碼方式和一般采用的“application/x-www-form-urlencoded” MIME格式編碼算法(比如Java標準庫中的 java.net.URLEncoder的實現) 相似, 但又有所不同。 實現時, 可以先用標準庫的方式進行編碼, 然後把編碼後的字符串中加號(+)替換成 %20、星號(*)替換成 %2A、%7E 替換回波浪號(~),即可得到上述規則描述的編碼字符串。這個算法可以用下麵的 percentEncode 方法來實現:

    1. private static final String ENCODING = "UTF-8";
    2. private static String percentEncode(String value) throws UnsupportedEncodingException {
    3. return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null;
    4. }


    (c) 將編碼後的參數名稱和值用英文等號(=)進行連接。
    (d) 將等號連接得到的參數組合按步驟(a)排好的順序依次使用&符號連接,即得到規範化請求字符串。

  2. 將上一步構造的規範化字符串按照下麵的規則構造成待簽名的字符串:

    1. StringToSign=
    2. HTTPMethod + “&” +
    3. percentEncode(“/”) + ”&” +
    4. percentEncode(CanonicalizedQueryString)

    其中 HTTPMethod 是提交請求用的 HTTP 方法,比如 GET。
    percentEncode(“/”) 是按照 1.b 中描述的 URL 編碼規則對字符 “/” 進行編碼得到的值,即 “%2F”。
    percentEncode(CanonicalizedQueryString) 是對第 1 步中構造的規範化請求字符串按 1.b 中描述的 URL 編碼規則編碼後得到的字符串。

  3. 按照 RFC2104 的定義,計算待簽名字符串 StringToSign 的 HMAC 值。注意:計算簽名時使用的 Key 就是用戶持有的 Access Key Secret 並加上一個 “&” 字符(ASCII:38),使用的哈希算法是 SHA1。

  4. 按照 Base64 編碼規則把上麵的 HMAC 值編碼成字符串,即得到簽名值(Signature)。

  5. 將得到的簽名值作為 Signature 參數添加到請求參數中,即完成對請求簽名的過程。
    注意:得到的簽名值在作為最後的請求參數值提交給ECS服務器的時候,要和其他參數一樣,按照 RFC3986 的規則進行 URL 編碼。

最後更新:2016-11-23 16:04:13

  上一篇:go API概覽__API參考_高性能計算-阿裏雲
  下一篇:go 實例相關接口__API參考_高性能計算-阿裏雲