Virtual Private Cloud (VPC) APIを呼び出すときにリクエストタイムアウトまたは内部サーバーエラーが発生した場合、クライアントはリクエストを再試行できます。 この場合、リクエストにClientTokenパラメーターを指定して、システムが同じ操作を複数回実行しないようにすることができます。
べき等とは
等価性は、数学またはコンピュータサイエンスにおけるいくつかの操作およびリソースの特性です。 Impotenceを使用すると、リクエストが複数回再試行された後に最初のリクエストの結果を取得できます。 等価性は、分散システム設計において重要な役割を果たす。
べき等性を確保する
ほとんどの場合、クライアントは、HTTPステータスコード500 (InternalServerError
) が返された場合、HTTPステータスコード503 (ServiceUnavailable
) が返された場合、または応答が返されなかった場合にのみ、リクエストを再試行します。 VPC APIを使用すると、クライアントは最大64 ASCII文字で構成されるパラメーター値を生成します。この値をClientTokenに割り当てて、再試行のべき等性を確保できます。
ClientTokenの詳細
次のセクションでは、ClientTokenの詳細について説明します。
- ClientToken値は、クライアントによって生成される一意で大文字と小文字を区別する文字列で、長さは最大64のASCII文字を含めることができます。 例:
ClientToken=123e4567-e89b-12d3-a456-426655440000
- ClientTokenパラメーターに使用済みの値を指定し、他のリクエストパラメーターに異なる値を使用した場合、VPCはエラーコード
IdempotentParameterMismatch
を返します。説明 再試行するたびに、SignatureNonce、Timestamp、およびSignatureに異なる値を使用する必要があります。 これは、VPCがSignatureNonceを使用してリプレイ攻撃を防ぎ、Timestampを使用して各リクエストのリクエスト時間をマークするためです。 再試行時には、異なるSignatureNonceとTimestampの値を指定する必要があります。 その結果、Signatureの値が変更される。 - リクエストでClientTokenパラメーターを指定すると、次の結果が返される場合があります。
- HTTPステータスコード200が返された場合、クライアントはリクエストが再試行された後に最後のリクエストと同じ結果を受け取ります。 ただし、サーバーのステータスは影響を受けません。
- HTTPステータスコード4xxが
try it later
エラーメッセージなしで返された場合、再試行は失敗します。 リクエストを再試行する前に、返されたエラーメッセージに基づいて問題をトラブルシューティングする必要があります。