

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS FIS 的实验报告配置
<a name="experiment-report-configuration"></a>

您可以启用 AWS 故障注入服务 (FIS) 来生成实验报告，从而更轻松地生成弹性测试的证据。实验报告是一个 PDF 文档，它汇总了实验操作，并可选择从您指定的 CloudWatch 仪表板捕获应用程序的响应。要查看示例实验报告，请[在此](samples/FisExampleReport.pdf.zip)处下载 zip 文件。

要启用和配置为实验生成的报告的内容，您需要为实验模板定义实验报告配置。当您指定 CloudWatch 仪表板时， AWS FIS 会包含给定仪表板中所有小组件的快照图，并在您指定的持续时间内注释实验的开始和结束时间，如下例所示。

此示例演示了可用区 (AZ) 中丢包实验的影响。当在 AZ use1-az6 中引入数据包丢失时，流量会从 use1-az6 转移到 use1-az4，因此该可用区中负载均衡器处理的字节数会减少。

![](http://docs.aws.amazon.com/zh_cn/fis/latest/userguide/images/packet-loss-az-example.png)


实验结束后，可以从 AWS FIS 控制台下载报告，也可以将其存储在 Amazon S3 存储桶中。如果您在报告配置中包含 CloudWatch 仪表板，则还会提供每个小组件的图像。对于作为目标预览一部分`cancelled`或作为目标预览一部分运行的实验（**ActionSmode** 设置为），不会生成报告。`skip-all`一旦实验超过实验数据保留期限，则只能从 Amazon S3 存储桶中获取报告。 AWS 每份交付的报告均收取 FIS 费用，但因内部错误而失败的报告除外。有关更多信息，请参阅[AWS 故障注入服务定价](https://aws.amazon.com/fis/pricing/)和[AWS 故障注入服务的配额和限制](fis-quotas.md)。可能会收取 Amazon S3 的摄取和存储费用，**GetMetricWidgetImage**以及**GetDashboard**请求的 CloudWatch API 费用。有关更多信息，请参阅 [Amazon S3 的定价](https://aws.amazon.com/s3/pricing/)和[CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

**Topics**
+ [实验报告配置语法](#experiment-report-syntax)
+ [实验报告权限](#experiment-report-permissions)
+ [实验报告最佳实践](#experiment-report-best-practices)

## 实验报告配置语法
<a name="experiment-report-syntax"></a>

 以下是实验报告配置的语法，这是实验模板的可选部分。

```
{
    "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 实验的影响和结果。在定义实验报告配置时，您需要提供以下内容：

**输出**  
`experimentReportConfiguration`的部分指定了实验报告的交付地点。在中`outputs`，您可以`s3Configuration`通过提供以下内容来指定：  
+ `bucketName`-存储报告的 Amazon S3 存储桶的名称。存储桶必须与实验位于同一区域。
+ `prefix`（可选）-存储报告的 Amazon S3 存储桶中的前缀。强烈建议使用此字段，以便您只能访问前缀。

**数据源**  
的可选部分指定实验报告中将包含的其他数据源。`experimentReportConfiguration`  
+ `cloudWatchDashboards`-将包含在报告中的 CloudWatch 仪表板阵列。仅限于一个 CloudWatch 仪表板。
+ `dashboardIdentifier`-控制面板的 ARN。 CloudWatch 报告中将包含此控制面板`metric`中该类型的每个控件的快照图，但跨区域指标除外。

**preExperimentDuration**  
的可选部分`experimentReportConfiguration`，用于定义要包含在报告中的 CloudWatch 仪表板指标的实验前持续时间，最多 30 分钟。这段时间应该代表您的应用程序的稳定状态。例如，实验前持续时间为 5 分钟意味着快照图表将在实验开始前 5 分钟包含指标。持续时间的格式为 ISO 8601，默认格式为 20 分钟。

**postExperimentDuration**  
的可选部分`experimentReportConfiguration`，用于定义要包含在报告中的 CloudWatch 仪表板指标的实验后持续时间，最多 2 小时。该持续时间应代表您的应用程序的稳定状态或恢复期。例如，如果您将实验后持续时间指定为 5 分钟，则快照图表将包含直到实验结束 5 分钟后的指标。持续时间的格式为 ISO 8601，默认格式为 20 分钟。

## 实验报告权限
<a name="experiment-report-permissions"></a>

要让 AWS FIS 生成和存储实验报告，您需要允许 AWS FIS 实验 IAM 角色执行以下操作：
+ `cloudwatch:GetDashboard`
+ `cloudwatch:GetMetricWidgetImage`
+ `s3:GetObject`
+ `s3:PutObject`

我们建议您遵循 AWS 安全最佳实践，将实验角色限制为存储桶和前缀。以下是限制实验角色访问权限的策略声明示例。

------
#### [ JSON ]

****  

```
{
    "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 存储桶提交报告的额外权限
<a name="additional-s3-permissions"></a>

 如果您在中指定`S3Configuration`的 Amazon S3 存储桶已使用 CMK 加密，则需要根据您的 KMS 密钥策略向 FIS 实验角色授予以下额外权限：
+ `kms:GenerateDataKey`
+ `kms:Decrypt`

以下是 KMS 密钥策略声明示例，该声明允许 FIS 实验角色向加密存储桶写入报告：

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

## 实验报告最佳实践
<a name="experiment-report-best-practices"></a>

 以下是使用 AWS FIS 实验报告配置的最佳实践：
+ 在开始实验之前，请生成目标预览，以验证您的实验模板是否按预期进行配置。目标预览将为您提供有关实验预期目标的信息。要了解更多信息，请参阅[使用实验模板生成目标预览](generate-target-preview.md)。
+ 该报告不应用于对失败的实验进行故障排除。取而代之的是使用实验日志来排除实验错误。我们建议您仅在之前运行并成功完成的实验中使用该报告。
+ 限制实验 IAM 角色放置并获取对 S3 目标存储桶和前缀的对象访问权限。我们建议您仅将 bucket/前缀指定 AWS 给 FIS 实验报告，不要向其他 AWS 服务授予访问该存储桶和前缀的权限。
+ 使用 Amazon S3 对象锁定可在固定时间内或无限期地防止报告被删除或覆盖。要了解更多信息，请参阅[使用对象锁定锁定对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html)。
+ 如果您的 CloudWatch 控制面板位于同一区域的单独账户中，则可以使用 CloudWatch 跨账户可观察性通过 CloudWatch 控制台或和 API 中的 Observability Acces AWS s Manager 命令将您的 FIS Orchestrator 账户启用为监控账户，将单独的账户设置为源账户。 AWS CLI 要了解更多信息，请参阅[CloudWatch 跨账户可观察性](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)。