AWS FIS 的實驗報告組態 - AWS 故障注入服務

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

AWS FIS 的實驗報告組態

您可以啟用 AWS Fault Injection Service (FIS) 來產生實驗的報告,以便更輕鬆地產生彈性測試的證據。實驗報告是 PDF 文件,摘要實驗動作,並選擇性地從您指定的 CloudWatch 儀表板擷取應用程式回應。若要查看範例實驗報告,請在此處下載 zip 檔案。

若要啟用和設定為實驗產生的報告內容,您可以定義實驗範本的實驗報告組態。當您指定 CloudWatch 儀表板時, AWS FIS 會包含指定儀表板中所有小工具的快照圖形,並在您指定的持續時間內以實驗開始和結束時間標註,如以下範例所示。

此範例示範封包遺失實驗在可用區域 (AZ) 中的影響。在 AZ use1-az6 中引入封包遺失時,流量會從 use1-az6 轉移到 use1-az4,使得該 AZ 中負載平衡器處理的位元組數會減少。

Two graphs showing contrasting ProcessedBytes trends for load balancers in different availability zones.

當實驗結束時,報告可以從 AWS FIS 主控台下載,並且也存放在 Amazon S3 儲存貯體中。如果您在報告組態中包含 CloudWatch 儀表板,也會傳送每個小工具的影像。對於做為目標預覽一部分cancelled或執行的實驗 (將 actionsMode 設定為 ),不會產生報告skip-all。一旦實驗超過實驗資料保留限制,報告將只能從 Amazon S3 儲存貯體取得。除發生內部錯誤而失敗的報告外,每個交付的報告都會收取 AWS FIS 費用。如需詳細資訊,請參閱 AWS Fault Injection Service 定價Fault Injection Service AWS 的配額和限制。Amazon S3 和 CloudWatch API 費用的擷取和儲存費用適用於 GetMetricWidgetImageGetDashboard 請求。如需詳細資訊,請參閱 Amazon S3 定價CloudWatch 定價

實驗報告組態語法

以下是實驗報告組態的語法,這是實驗範本的選用區段。

{ "experimentReportConfiguration": { "outputs": { "s3Configuration": { "bucketName": "my-bucket-name", "prefix": "report-storage-prefix" } }, "dataSources": { "cloudWatchDashboards": [ { "dashboardIdentifier": "arn:aws:cloudwatch::123456789012:dashboard/MyDashboard" } ] }, "preExperimentDuration": "PT20M", "postExperimentDuration": "PT20M" } }

使用 experimentReportConfiguration,您可以自訂輸出目的地、輸入資料和時間範圍,讓資料包含在實驗報告中,這可協助您更了解 AWS FIS 實驗的影響和結果。當您定義實驗報告組態時,請提供下列項目:

outputs

的 區段experimentReportConfiguration,指定實驗報告交付的位置。在 中outputs,您可以提供下列項目s3Configuration來指定 :

  • bucketName - 存放報告的 Amazon S3 儲存貯體名稱。儲存貯體必須與實驗位於相同的區域。

  • prefix (選用) - Amazon S3 儲存貯體中的字首,用於存放報告。強烈建議使用此欄位,以便您僅限制對字首的存取。

dataSources

的選用區段experimentReportConfiguration,指定要包含在實驗報告中的其他資料來源。

  • cloudWatchDashboards - 包含在報告中的 CloudWatch 儀表板陣列。僅限一個 CloudWatch 儀表板。

  • dashboardIdentifier- CloudWatch 儀表板的 ARN。除了跨區域指標之外,報告中將包含具有此儀表板metric類型之每個小工具的快照圖形。

preExperimentDuration

的選用區段experimentReportConfiguration,定義 CloudWatch 儀表板指標要包含在報告中的實驗前持續時間,最長 30 分鐘。這應該是代表應用程式穩定狀態的期間。例如,實驗前持續時間為 5 分鐘,表示快照圖形會在實驗開始前 5 分鐘包含指標。持續時間的格式為 ISO 8601,預設值為 20 分鐘。

postExperimentDuration

的選用區段experimentReportConfiguration,定義 CloudWatch 儀表板指標要包含在報告中的試驗後持續時間,最長 2 小時。這應該是代表應用程式穩定狀態或復原期間的持續時間。例如,如果您指定 5 分鐘的試驗後持續時間,快照圖形將包含指標,直到實驗結束後 5 分鐘。持續時間的格式為 ISO 8601,預設值為 20 分鐘。

實驗報告許可

若要讓 AWS FIS 產生和存放實驗報告,您需要從 AWS FIS 實驗 IAM 角色允許下列操作:

  • cloudwatch:GetDashboard

  • cloudwatch:GetMetricWidgetImage

  • s3:GetObject

  • s3:PutObject

我們建議您遵循 AWS 安全最佳實務,並將實驗角色限制為儲存貯體和字首。以下是限制實驗角色存取的政策陳述式範例。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::my-experiment-report-bucket/my-prefix/*", "Effect": "Allow" }, { "Action": [ "cloudwatch:GetDashboard" ], "Resource": "arn:aws:cloudwatch::012345678912:dashboard/my-experiment-report-dashboard", "Effect": "Allow" }, { "Action": [ "cloudwatch:GetMetricWidgetImage" ], "Resource": "*", "Effect": "Allow" } ] }

使用客戶受管金鑰 (CMK) 加密的 Amazon S3 儲存貯體交付報告的其他許可

如果您在 中指定的 Amazon S3 儲存貯體S3Configuration使用 CMK 加密,您需要將下列額外許可授予 KMS 金鑰政策上的 FIS 實驗角色:

  • kms:GenerateDataKey

  • kms:Decrypt

以下是允許 FIS 實驗角色將報告寫入加密儲存貯體的範例 KMS 金鑰政策陳述式:

{ "Sid": "Allow FIS experiment report", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::012345678912:role/FISExperimentRole", ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

實驗報告最佳實務

以下是使用 AWS FIS 實驗報告組態的最佳實務:

  • 開始實驗之前,請產生目標預覽,以確認您的實驗範本已如預期般設定。目標預覽會為您提供有關預期實驗目標的資訊。如需進一步了解,請參閱 從實驗範本產生目標預覽

  • 報告不應用於故障診斷失敗的實驗。反之,請使用實驗日誌來疑難排解實驗錯誤。我們建議您僅對先前已執行且成功完成的實驗依賴報告。

  • 限制實驗 IAM 角色放置,並取得對 S3 目的地儲存貯體和字首的物件存取權。我們建議您將儲存貯體/字首專用於 AWS FIS 實驗報告,並且不要授予其他服務 AWS 存取此儲存貯體和字首的權限。

  • 使用 Amazon S3 物件鎖定,以防止報告在固定時間長度內或無限期遭到刪除或覆寫。若要進一步了解,請參閱使用物件鎖定鎖定物件

  • 如果您的 CloudWatch 儀表板位於相同區域內的個別帳戶,您可以使用 CloudWatch 跨帳戶可觀測性,讓 AWS FIS 協調器帳戶做為監控帳戶,並將個別帳戶做為來源帳戶,從 AWS CLI 和 API 中的 CloudWatch 主控台或可觀測性存取管理員命令。若要進一步了解,請參閱 CloudWatch 跨帳戶可觀測性