本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS FIS 的實驗報告組態
您可以啟用 AWS Fault Injection Service (FIS) 來產生實驗的報告,以便更輕鬆地產生彈性測試的證據。實驗報告是 PDF 文件,摘要實驗動作,並選擇性地從您指定的 CloudWatch 儀表板擷取應用程式回應。若要查看範例實驗報告,請在此處下載 zip 檔案。
若要啟用和設定為實驗產生的報告內容,您可以定義實驗範本的實驗報告組態。當您指定 CloudWatch 儀表板時, AWS FIS 會包含指定儀表板中所有小工具的快照圖形,並在您指定的持續時間內以實驗開始和結束時間標註,如以下範例所示。
此範例示範封包遺失實驗在可用區域 (AZ) 中的影響。在 AZ use1-az6 中引入封包遺失時,流量會從 use1-az6 轉移到 use1-az4,使得該 AZ 中負載平衡器處理的位元組數會減少。

當實驗結束時,報告可以從 AWS FIS 主控台下載,並且也存放在 Amazon S3 儲存貯體中。如果您在報告組態中包含 CloudWatch 儀表板,也會傳送每個小工具的影像。對於做為目標預覽一部分cancelled
或執行的實驗 (將 actionsMode 設定為 ),不會產生報告skip-all
。一旦實驗超過實驗資料保留限制,報告將只能從 Amazon S3 儲存貯體取得。除發生內部錯誤而失敗的報告外,每個交付的報告都會收取 AWS FIS 費用。如需詳細資訊,請參閱 AWS Fault Injection Service 定價
實驗報告組態語法
以下是實驗報告組態的語法,這是實驗範本的選用區段。
{ "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 跨帳戶可觀測性。