Amazon Web Services 有提供很多服務,有的早在「雲端風潮」前就有,有的是最近才推出的。把 AWS Documentation library 每個服務的 API 認證方式看完一遍後,只能苦笑對使用 AWS API 的人致敬...
有幾個心得與感想:
- 文件雖然套用同一組模板 (用 frame 切開,左邊索引,右邊內容),但其中的寫法並沒有統一。理論上每個 API 都會有的 API 簽名環節在不同的文件裡可能會在不同的章節出現。
- 認證的方式不一致:
- 早期的服務很亂,大多都是以 SOAP 為基礎的 API,尤其是跟錢有關的這塊特別明顯 (因為 Amazon 很早就 API 化)。
- 一開始出來的 S3 使用的是 REST 概念,簽名的值放在 HTTP Header 內,欄位名稱是
Authorization
,CloudFront 是 S3 的延伸,所以認證方式與 S3 相同。 - 但與 S3 同時期推出的 EC2,以及後來大多數的服務,都是以
GET
為基礎。這時候兩套系統的 API 設計邏輯就不同了。 - 最近出的 Route53,又再引入了 REST 概念,但欄位名稱為
X-Amzn-Authorization
,要放的簽名格式又改變了...
這也是為什麼沒有一套 library 可以一直吃遍 AWS 服務的關係,API 的設計讓人感覺頗疲倦... XD