本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
由於支援 之系統的分散式性質,Amazon 會EC2API遵循最終一致性模型API。這表示您執行的API命令影響 Amazon EC2 資源的結果,可能不會立即出現在您執行的所有後續命令中。當您執行緊接上一個API命令的 API 命令時,您應該記住這一點。
最終一致性可能會影響您管理資源的方式。例如,如果您執行命令來建立資源,則最終其他命令將可見該資源。這表示,如果您執行命令來修改或描述您剛建立的資源,其 ID 可能尚未在整個系統中傳播,且您會收到回應資源不存在的錯誤。
若要管理最終一致性,您可以執行下列動作:
-
在執行修改資源的命令之前,請先確認資源的狀態。使用指數退避演算法執行適當的
Describe
命令,以確保您有足夠的時間讓上一個命令在系統中傳播。若要這麼做,請重複執行Describe
命令,從幾秒鐘的等待時間開始,然後逐漸增加到五分鐘的等待時間。 -
在後續命令之間新增等待時間,即使
Describe
命令傳回準確的回應。從幾秒鐘的等待時間開始套用指數退避演算法,並逐漸增加至約五分鐘的等待時間。
最終一致性錯誤範例
以下是最終一致性可能會遇到的錯誤碼範例。
-
InvalidInstanceID.NotFound
如果您成功執行
RunInstances
命令,然後立即使用 回應中提供的執行個體 ID 執行另一個命令RunInstances
,則可能會傳回InvalidInstanceID.NotFound
錯誤。這並不表示執行個體不存在。可能受影響的特定命令包括:
-
DescribeInstances
:若要確認執行個體的實際狀態,請使用指數退避演算法執行此命令。 -
TerminateInstances
:若要確認執行個體的狀態,請先使用指數退避演算法執行DescribeInstances
命令。重要
如果您在執行 後出現
InvalidInstanceID.NotFound
錯誤TerminateInstances
,這並不表示執行個體已終止或將終止。您的執行個體可能仍在執行中。因此,首先使用 確認執行個體的狀態很重要DescribeInstances
。
-
-
InvalidGroup.NotFound
如果您成功執行
CreateSecurityGroup
命令,然後立即使用 回應中提供的安全群組 ID 執行另一個命令CreateSecurityGroup
,則可能會傳回InvalidGroup.NotFound
錯誤。若要確認安全群組的狀態,請使用指數退避演算法執行DescribeSecurityGroups
命令。 -
InstanceLimitExceeded
您已請求的執行個體數量超過目前執行個體限制允許指定執行個體類型的數量。如果您正在快速啟動和終止執行個體,您可能會意外達到此限制,因為終止的執行個體會在終止執行個體後計入執行個體限制一段時間。