本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
相依性驗證
相依性驗證測試會封鎖區域內的相依性,以查看服務在無法使用時的行為。它可協助您驗證服務在軟相依性受損時是否正常運作,以及您可能不知道的表面相依性是否困難。您也可以包含已知的硬相依性,以了解其影響。
此測試有何獨特之處
-
專注於區域內相依性故障。
-
您可以選擇要鎖定的相依性。
-
如果您已在新一代 Resilience Hub 中啟用相依性探索,您可以從探索到的相依性中進行挑選。如果沒有,您可以手動輸入 DNS 端點。
如何通過此測試
-
這是持續的測試。如果測試動作結束之前,所有成功警示都保持
OK狀態,則測試會通過。使用此選項來驗證軟相依性是否真正軟 – 如果您的警示違反,則相依性實際上可能很困難。
要考慮的事項
-
從單一軟相依性開始並建置 - 一次驗證一個,再封鎖許多。
-
如果您包含硬相依性,請預期您的警示會違反,且測試會失敗 – 硬相依性會在封鎖時造成重大影響。這有助於確認相依性是否真的困難。
-
選擇衡量整體服務運作狀態的成功警示,而非相依性本身的運作狀態。
-
確保您的相依性在測試期間被主動使用 (流量流向它們) – 這會驗證區塊是否有效。請考慮新增追蹤相依性用量的警示或指標 (例如,請求計數或連線錯誤),以確認在測試期間正在執行相依性。
-
相依性必須是可解析的 DNS 端點 – 如果 DNS 未解析,動作將會失敗。
-
封鎖觸發運作狀態檢查失敗的相依性可能會導致運算 (例如,Amazon ECS 任務) 遭到取代。封包遺失動作不會重新套用至取代任務,且可能回報為失敗。
金鑰測試參數
-
持續時間 – 測試動作執行的時間長度。之後需要幾分鐘的時間,才能在測試結束之前收集最終結果。第一次建立測試時,預設為 30 分鐘。
-
要封鎖的相依性 – 預設會預先選取具有最高查詢磁碟區的探索到的軟相依性。如果沒有將相依性分類為軟性,則不會選取任何相依性。您可以調整 以鎖定個別相依性或特定群組,或依 DNS 網域名稱手動新增相依性。此處新增的其他相依性僅用於此測試,不會儲存至服務的相依性探索。這些預設值適用於 主控台;使用 API 時,您可以明確提供相依性。
動作
此測試會執行下列 AWS FIS 動作,將流量捨棄至您選取的相依性。動作會在 Amazon EC2 執行個體、Amazon ECS 任務 (Amazon EC2 和 Fargate) 和 Amazon EKS Pod (Amazon EC2) 上注入 100% 封包遺失。如果您的服務沒有資源符合動作的目標類型,則會略過該動作。
注意
用於封鎖相依性的動作需要額外的設定:安裝在 Amazon EC2 執行個體上的 SSM 代理程式、Amazon ECS 任務定義中的 SSM 代理程式容器,或 Amazon EKS Pod 的 Kubernetes 服務帳戶。
| Action | 說明 |
|---|---|
aws:ssm:send-command |
將流量從 Amazon EC2 執行個體捨棄至選取的相依性。 |
aws:ecs:task-network-packet-loss |
將流量從 Amazon ECS 任務捨棄至選取的相依性。 |
aws:eks:pod-network-packet-loss |
將流量從 Amazon EKS Pod 捨棄至選取的相依性。 |
若要查看此測試的參數及其預設值,請使用 get-test-template。