View a markdown version of this page

相依性驗證 - AWS 彈性中樞

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

相依性驗證

相依性驗證測試會封鎖區域內的相依性,以查看服務在無法使用時的行為。它可協助您驗證服務在軟相依性受損時是否正常運作,以及您可能不知道的表面相依性是否困難。您也可以包含已知的硬相依性,以了解其影響。

此測試有何獨特之處
  • 專注於區域內相依性故障。

  • 您可以選擇要鎖定的相依性。

  • 如果您已在新一代 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。