閱讀295 返回首頁    go 小米路由器


如何保證冪等性__附錄_API 參考_雲服務器 ECS-阿裏雲

當通過調用創建實例接口在ECS中創建雲服務器時,如果遇到了請求超時或服務器內部錯誤時,客戶端可能會嚐試重發請求,這時客戶端可以通過提供可選參數ClientToken避免服務器創建出比預期要多的實例,也就是通過提供ClientToken參數保證請求的冪等性。ClientToken是一個由客戶端生成的唯一的、大小寫敏感、不超過64個ASCII字符的字符串。

如果用戶使用同一個ClientToken值調用創建實例接口,則服務端會返回相同的請求結果,包含相同的InstanceId。因此用戶在遇到錯誤進行重試的時候,可以通過提供相同的ClientToken值,來確保ECS隻創建一個實例,並得到這個實例的InstanceId

如果用戶提供了一個已經使用過的ClientToken,但其他請求參數不同,則ECS會返回IdempotentParameterMismatch的錯誤代碼。但需要注意的是,SignatureNonceTimestampSignature參數在重試時是需要變化的,因為ECS使用SignatureNonce來防止重放攻擊,使用Timestamp來標記每次請求時間,所以再次請求必須提供不同的SignatureNonceTimestamp參數值,這同時也會導致Signature值的變化。

通常,客戶端隻需要在500(InternalErrorInternalError)或503(ServiceUnavailable)錯誤、或者無法得到響應結果的情況下進行重試操作。返回結果是200時,重試可以得到上次相同的結果,但不會對服務端狀態帶來任何影響。而對4xx的返回錯誤,除非提示信息裏明確出現“try it later”,通常重試也是不能成功的。

最後更新:2016-11-23 16:03:51

  上一篇:go 如何調用接口__附錄_API 參考_雲服務器 ECS-阿裏雲
  下一篇:go 欠費狀態下的API行為__附錄_API 參考_雲服務器 ECS-阿裏雲