

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

# 使用场 AWS FIS 景库
<a name="scenario-library"></a>

这些场景定义了客户可用于测试应用程序弹性的事件或条件，如运行应用程序的计算资源中断。AWS 创建并拥有这些场景，可针对常见的应用程序问题为您提供预定义目标和故障操作（如停止运行自动扩展组中 30% 的实例），最大限度地减少无差别的繁重工作。

这些场景由仅限控制台的场景库提供，并基于 AWS FIS 实验模板运行。要使用场景运行实验，您需要从库中选择场景，然后指定与工作负载详细信息相匹配的参数，最后将所选场景作为实验模板保存到账户中。

**Topics**
+ [查看场景](#viewing-a-scenario)
+ [使用场景](#using-a-scenario)
+ [导出场景](#exporting-a-scenario)
+ [场景参考](scenario-library-scenarios.md)

## 查看场景
<a name="viewing-a-scenario"></a>

使用控制台查看场景：

1. 打开 AWS FIS 控制台，网址为[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/)。

1. 在导航窗格中，选择**场景库**。

1. 要查看有关特定场景的信息，请选择场景卡片以打开拆分面板。
   + 您可以在页面底部的拆分面板的**描述**选项卡中查看对场景的简短描述。您还可以找到先决条件的简短摘要，其中包含所需目标资源的摘要以及为准备搭配场景使用的资源所需采取的任何操作。最后，您可以查看有关场景目标和操作的更多信息，并查看使用默认设置成功运行实验时的预期持续时间。
   + 您可以在页面底部的拆分面板的**内容**选项卡中预览要使用场景创建的实验模板的部分填充版本。
   + 您可以在页面底部的拆分面板的**详细信息**选项卡中找到如何实施场景的详细说明。其中可能包含有关如何概算场景各方面的详细信息。您还会了解哪些指标可以作为停止条件，并提供可从实验中掌握的可观测性（如果适用）。最后，您将获得有关如何扩展生成的实验模板的建议。

## 使用场景
<a name="using-a-scenario"></a>

使用控制台使用场景：

1. 打开 AWS FIS 控制台，网址为[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/)。

1. 在导航窗格中，选择**场景库**。

1. 要查看有关特定场景的信息，请选择场景卡片以打开拆分面板

1. 要使用场景，请选择场景卡并选择**使用场景创建模板**。

1. 在**创建实验模板**视图中，填写所有缺失的项目。

   1. 某些方案允许您编辑在多个操作或目标之间共享的参数。一旦您对场景进行任何更改（包括通过共享参数编辑进行更改），此功能将被禁用。要使用此功能，请选择**编辑共享参数**按钮。在模态中编辑参数，然后选择**保存**按钮。

   1. 某些实验模板可能缺少动作或目标参数，这些参数会在每个动作和目标卡片上突出显示。选择每张卡片的**编辑**按钮，添加缺失信息，然后选择卡片上的**保存**按钮。

   1. 所有模板都要用到**服务访问**执行角色。您可以选用现有角色，为实验模板新建角色。

   1. 我们建议通过选择现有 AWS CloudWatch 警报来定义一个或多个可选的**停止条件**。了解有关 [AWS FIS 的停止条件](stop-conditions.md) 的更多信息。如果您尚未配置警报，则可以按照[使用 Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) Alarms 中的说明进行操作，稍后更新实验模板。

   1. 我们建议对亚马逊** CloudWatch 日志**或 Amazon S3 存储桶启用可选实验日志。了解有关 [AWS FIS 的实验日志](monitoring-logging.md) 的更多信息。如果您尚未配置合适的资源，则可以在稍后更新实验模板。

1. 在**创建实验模板**中，选择**创建实验模板**。

1. 在 AWS FIS 控制台的 “**实验模板**” 视图中，选择 “**开始实验**”。了解有关 [管理 AWS FIS 实验模板管理你的 AWS FIS 实验](experiments.md) 的更多信息。

## 导出场景
<a name="exporting-a-scenario"></a>

场景体验仅适用于控制台。场景类似于实验模板，但又并不完全相同，它能直接导入 AWS FIS。如果您想将场景添加到自动化流程中，则可以使用以下两种方法之一：

1. 按照中的[使用场景](#using-a-scenario)步骤创建有效的 AWS FIS 实验模板并导出该模板。

1. 按照 [查看场景](#viewing-a-scenario) 和步骤 3 中的步骤，复制**内容**选项卡中的场景内容并保存，然后手动添加缺失的参数，以创建有效实验模板。

# 场景参考
<a name="scenario-library-scenarios"></a>

场景库中的场景旨在尽可能使用[标签](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html)，其中场景描述的**先决条件**和**工作原理**部分介绍了各场景所需的标签。您可以使用这些预定义的标签来标记资源，也可以使用共享的参数编辑体验设置自己的标签（请参阅[使用场景](scenario-library.md#using-a-scenario)）。

本参考描述了 AWS FIS 场景库中的常见场景。您也可以使用 AWS FIS 控制台列出支持的场景。

有关更多信息，请参阅 [使用场 AWS FIS 景库](scenario-library.md)。

AWS FIS 支持以下 Amazon EC2 场景。这些场景使用[标签](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html)来确定目标实例。您可以使用自己的标签，也可以使用场景中包含的默认标签。其中一些场景会[使用 SSM 文档](https://docs.aws.amazon.com//fis/latest/userguide/actions-ssm-agent.html)。
+ **EC2 压力：实例故障**：停止一个或多个 EC2 实例，探索实例故障产生的影响。

  定位当前区域中带有特定标签的实例。在此场景中，亚马逊将停止运行实例，并在操作持续时间结束时重启实例，默认为 5 分钟。
+ **EC2 压力：磁盘**：探索磁盘利用率增加对 EC2 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中带有特定标签的 EC2 实例。在此场景中，您可以自定义在操作持续时间内向目标 EC2 实例注入越来越高的磁盘利用率，每项磁盘压力操作的时间均默认为 5 分钟。
+ **EC2 压力：CPU**：探索 CPU 增加对 EC2 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中带有特定标签的 EC2 实例。在此场景中，您可以自定义在操作持续时间内向目标 EC2 实例注入越来越高的 CPU 压力，每项 CPU 压力操作的时间均默认为 5 分钟。
+ **EC2 压力：内存**：探索内存利用率增加对 EC2 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中带有特定标签的 EC2 实例。在此场景中，您可以自定义在操作持续时间内向目标 EC2 实例注入越来越高的内存压力，每项内存压力操作的时间均默认为 5 分钟。
+ **EC2 压力：网络延迟**：探索网络延迟增加对 EC2 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中带有特定标签的 EC2 实例。在此场景中，您可以自定义在操作持续时间内向目标 EC2 实例注入越来越高的网络延迟，每项网络延迟操作的时间均默认为 5 分钟。

AWS FIS 支持以下 Amazon EKS 场景。这些场景使用 Kubernetes 应用程序标记来确定目标 EKS 容器组（Pod）。您可以使用自己的标记，也可以使用场景中包含的默认标记。有关将 EKS 与 FIS 配合使用的更多信息，请参阅[EKS Pod 操作](eks-pod-actions.md)。
+ **EKS 压力：删除容器组（pod）**：删除一个或多个容器组（pod），探索 EKS 容器故障产生的影响。

  在此场景中，亚马逊将定位当前区域中与应用程序标签关联的目标容器组（pod）。在此场景中，亚马逊将终止所有匹配的容器组（pod）。Kubernetes 配置将控制容器组（pod）的重新创建过程。
+ **EKS 压力：CPU**：探索 CPU 增加对 EKS 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中与应用程序标签关联的目标容器组（pod）。在此场景中，您可以自定义在操作持续时间内向目标 EKS 容器组（pod）注入越来越高的 CPU 压力，每项 CPU 压力操作的时间均默认为 5 分钟。
+ **EKS 压力：磁盘**：探索磁盘利用率增加对 EKS 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中与应用程序标签关联的目标容器组（pod）。在此场景中，您可以自定义在操作持续时间内向目标 EKS 容器组（pod）注入越来越高的磁盘压力，每项 CPU 压力操作的时间均默认为 5 分钟。
+ **EKS 压力：内存**：探索内存利用率增加对 EKS 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中与应用程序标签关联的目标容器组（pod）。在此场景中，您可以自定义在操作持续时间内向目标 EKS 容器组（pod）注入越来越高的内存压力，每项内存压力操作的时间均默认为 5 分钟。
+ **EKS 压力：网络延迟**：探索网络延迟增加对 EKS 应用程序的影响。

  在此场景中，亚马逊将定位当前区域中与应用程序标签关联的目标容器组（pod）。在此场景中，您可以自定义在操作持续时间内向目标 EKS 容器组（pod）注入越来越高的网络延迟，每项网络延迟操作的时间均默认为 5 分钟。

AWS FIS 支持以下单可用区、多可用区和多区域应用程序场景。这些场景以多种资源类型为目标。
+ **AZ Availability: Power Interruption**：注入可用区（AZ）电力完全中断的预期症状。了解有关 [AZ Availability: Power Interruption](az-availability-scenario.md) 的更多信息。
+ **AZ: Application Slowdown**-在单个可用区 (AZ) 内的资源之间增加延迟，以减慢应用程序的速度。了解有关 [AZ: Application Slowdown](az-application-slowdown-scenario.md) 的更多信息。
+ **Cross-AZ: Traffic Slowdown**-注入数据包丢失以中断和减慢可用区之间的流量 (AZs)。了解有关 [Cross-AZ: Traffic Slowdown](cross-az-traffic-slowdown-scenario.md) 的更多信息。
+ **Cross-Region: Connectivity**：阻止从实验区域到目标区域的应用程序网络流量，并暂停跨区域数据复制。了解有关使用 [Cross-Region: Connectivity](cross-region-scenario.md) 的更多信息。

AWS FIS 支持 Amazon EBS 卷的以下场景。这些场景使用标签来定位卷。您可以使用自己的标签，也可以使用场景中包含的默认标签。目标卷必须位于同一个可用区内。有关更多信息，请参阅 [Amazon EBS 上的故障测试](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-fis.html)。
+ **EBS: Sustained Latency**— 探索持续延 I/O 迟对应用程序的影响。

  在这种情况下，我们将瞄准当前可用区中附加特定标签的卷。此场景在 15 分钟内使用单个延迟操作，在卷的 50% 读取和 100% 的写入操作中注入 500 毫秒的持续延迟。在这种情况下，您可以自定义注入的延迟时间、注 I/O 入的百分比和操作的持续时间。
+ **EBS: Increasing Latency**— 探索 I/O 延迟增加对应用程序的影响。

  在这种情况下，我们将瞄准当前可用区中附加特定标签的卷。这种情况会在 15 分钟内使用五个延迟操作对卷进行 10% 的读取和 25% 的写入操作注入 50 毫秒、200 毫秒、700 毫秒、1 秒和 15 秒的延迟。在这种情况下，您可以为每个延迟操作自定义注入的延迟量、 I/O 注入的百分比和操作持续时间。
+ **EBS: Intermittent Latency**— 探索间歇性 I/O 延迟峰值对应用程序的影响。

  在这种情况下，我们将瞄准当前可用区中附加特定标签的卷。此场景使用三个延迟操作，在卷的 0.1% 的读取和写入 I/O 操作上注入三个间歇性尖峰，分别为 30 秒、10 秒和 20 秒，每个峰值之间的恢复间隔为 15 分钟。在这种情况下，您可以为每个延迟操作自定义注入的延迟量、 I/O 注入的百分比和操作持续时间。
+ **EBS: Decreasing Latency**— 探索减少延 I/O 迟对应用程序的影响。

  在这种情况下，我们将瞄准当前可用区中附加特定标签的卷。此场景在 15 分钟内使用五个延迟操作，为卷的 10% 读取和写入操作注入 20 秒、5 秒、900 毫秒、300 毫秒和 40 毫秒的延迟。在这种情况下，您可以为每个延迟操作自定义注入的延迟量、 I/O 注入的百分比和操作持续时间。

# AZ Availability: Power Interruption
<a name="az-availability-scenario"></a>

 您可以使用 AZ Availability: Power Interruption 场景来诱发可用区（AZ）电力完全中断的预期症状。

可通过此场景来演示多可用区应用程序在单个可用区电力完全中断期间能够按预期运行。它包括区域计算（Amazon EC2、EKS 和 ECS）丢失、可用区无法重新扩展计算、子网连接丢失、RDS 故障转移、故障转移、 ElastiCache 对 S3 Express One Zone 目录存储桶的访问受损以及 EBS 卷无响应。默认情况下，未找到目标的操作将被跳过。

## 操作
<a name="az-availability-scenario-actions"></a>

以下操作相结合，会产生单个可用区电力完全中断的许多预期症状。“可用区可用性：电力中断”仅会影响在单个可用区电力中断期间预计会受到影响的服务。默认情况下，该场景会注入电力中断症状 30 分钟，然后再注入恢复期间可能出现的症状 30 分钟。

### Stop-Instances
<a name="az-availability-scenario-actions-stop-instances"></a>

在可用区电力中断期间，受影响可用区中的 EC2 实例将关闭。恢复供电后，实例将重启。AZ Availability: Power Interruption 包括 [aws:ec2:stop-instances](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#stop-instances)，用于在中断持续时间内停止受影响可用区中的所有实例。该持续时间过后，这些实例将重新启动。停止由 Amazon EKS 管理的 EC2 实例会导致相关 EKS 容器组（Pod）被删除。停止由 Amazon ECS 管理的 EC2 实例会导致相关 ECS 任务停止。

此操作以在受影响可用区中运行的 EC2 实例为目标。默认情况下，它以标签名为 `AzImpairmentPower`、值为 `StopInstances` 的实例为目标。您可以将此标签添加到实例中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的实例，则会跳过此操作。

### Stop-ASG-Instances
<a name="az-availability-scenario-actions-stop-asg-instances"></a>

在可用区电力中断期间，受影响可用区中由自动扩缩组管理的 EC2 实例将关闭。恢复供电后，实例将重启。AZ Availability: Power Interruption 包括 [aws:ec2:stop-instances](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#stop-instances)，用于在中断持续时间内停止受影响可用区中的所有实例，包括由自动扩缩管理的实例。该持续时间过后，这些实例将重新启动。

此操作以在受影响可用区中运行的 EC2 实例为目标。默认情况下，它以标签名为 `AzImpairmentPower`、值为 `IceAsg` 的实例为目标。您可以将此标签添加到实例中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的实例，则会跳过此操作。

### 暂停实例启动
<a name="az-availability-scenario-actions-pause-instance-launches"></a>

在可用区电力中断期间，对该可用区中预置容量的 EC2 API 调用将失败。特别是，以下内容 APIs 将受到影响：`ec2:StartInstances``ec2:CreateFleet`、和`ec2:RunInstances`。 AZ Availability: Power Interruption includes包括 [aws: ec2: api-insufficient-instance-capacity-error](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#api-ice)，以防止在受影响的可用区中配置新实例。

此操作确定用于预置实例的目标 IAM 角色。这些角色必须通过 ARN 进行确定。默认情况下，如果找不到有效的 IAM 角色，则会跳过此操作。

### 暂停 ASG 扩缩
<a name="az-availability-scenario-actions-pause-asg-scaling"></a>

 在可用区电力中断期间，自动扩缩控制面板为恢复可用区中丢失的容量而进行的 EC2 API 调用将失败。特别是，以下内容 APIs 将受到影响：`ec2:StartInstances``ec2:CreateFleet`、和`ec2:RunInstances`。 AZ Availability: Power Interruption包括 [aws: ec2: asg-insufficient-instance-capacity-error](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#asg-ice)，以防止在受影响的可用区中配置新实例。这还会阻止 Amazon EKS 和 Amazon ECS 在受影响的可用区中进行扩缩。

此操作以自动扩缩组为目标。默认情况下，它以标签名为 `AzImpairmentPower`、值为 `IceAsg` 的自动扩缩组为目标。您可以将此标签添加到自动扩缩组中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的自动扩缩组，则会跳过此操作。

### 暂停网络连接
<a name="az-availability-scenario-actions-pause-network-connectivity"></a>

在可用区电力中断期间，可用区中的联网将不可用。发生这种情况时，某些 AWS 服务可能需要几分钟时间更新 DNS，以反映受影响可用区中的私有端点不可用。在此期间，DNS 查询可能会返回无法访问的 IP 地址。AZ Availability: Power Interruption 包括 [aws:network:disrupt-connectivity](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#network-actions-reference)，用于阻止受影响可用区中所有子网的所有网络连接并持续 2 分钟。这将强制大多数应用程序超时和 DNS 刷新。2 分钟后结束该操作，可以随后在可用区仍然不可用的情况下恢复区域服务 DNS。

此操作以子网为目标。默认情况下，它以标签名为 `AzImpairmentPower`、值为 `DisruptSubnet` 的集群为目标。您可以将此标签添加到子网中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的子网，则会跳过此操作。

### 故障转移 RDS
<a name="az-availability-scenario-actions-failover-rds"></a>

在可用区电力中断期间，受影响可用区中的 RDS 节点将关闭。受影响可用区中的单个可用区 RDS 节点将完全不可用。对于多可用区集群，写入器节点将故障转移到未受影响的可用区，受影响可用区中的读取器节点将不可用。对于多可用区集群，如果写入器位于受影响的可用区中，则AZ Availability: Power Interruption包括 [aws: rds: failover-db-cluster](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#failover-db-cluster) 以进行故障转移。

此操作以 RDS 集群为目标。默认情况下，它以标签名为 `AzImpairmentPower`、值为 `DisruptRds` 的集群为目标。您可以将此标签添加到集群中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的集群，则会跳过此操作。

### 暂停 ElastiCache 复制组
<a name="az-availability-scenario-actions-pause-elasticache"></a>

在可用区电源中断期间，可用区中的 ElastiCache 节点不可用。 AZ Availability: Power Interruption包括 [aws: elasticache: replicationgroup-interrupt-az-power](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#interrupt-elasticache)，用于终止受影响可用区中的 ElastiCache 节点。在中断期间，不会在受影响的可用区中配置新实例，因此复制组的容量将保持在减少的状态。

此操作以 ElastiCache 复制组为目标。默认情况下，它以复制组为目标，其标签名`AzImpairmentPower`为，值为`ElasticacheImpact`。您可以将此标签添加到复制组中，也可以将默认标签替换为实验模板中您自己的标签。默认情况下，如果未找到有效的复制组，则将跳过此操作。请注意，只有节点位于受影响可用区的复制组才会被视为有效目标。

### 启动 ARC 区域自动换档
<a name="az-availability-scenario-actions-zonal-autoshift"></a>

在可用区电源中断开始五分钟后，在剩余的 25 分钟电源中断期间，恢复操作`aws:arc:start-zonal-autoshift`会自动将资源流量从指定的可用区转移出去。在这段时间之后，流量会转移回原来的可用区。请注意，在现实世界的可用区中，如果启用了自动换档，则电源中断 AWS 将检测到损耗并转移资源流量。虽然这种转移的时间各不相同，但估计是在减值开始后五分钟内发生的。

此操作针对支持自动移位的 Amazon 应用程序恢复控制器 (ARC) 资源。默认情况下，它以标签键`AzImpairmentPower`和值为目标的资源`RecoverAutoshiftResources`。您可以将此标签添加到您的资源中，也可以将默认标签替换为实验模板中您自己的标签。例如，您可能想要使用特定于应用程序的标签。默认情况下，如果未找到有效资源，则会跳过此操作。

### 暂停 EBS I/O
<a name="az-availability-scenario-actions-pause-ebs-io"></a>

可用区电力中断后，一旦恢复供电，极少数实例可能会遇到 EBS 卷无响应的情况。AZ Availability: Power Interruption 包括 [aws:ebs:pause-io](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#ebs-actions-reference)，以使 1 个 EBS 卷处于无响应状态。

默认情况下，仅以设置为在实例终止后持续存在的卷为目标。此操作以标签名为 `AzImpairmentPower`、值为 `APIPauseVolume` 的卷为目标。您可以将此标签添加到卷中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的卷，则会跳过此操作。

### 中断与 S3 Express One 区域目录存储桶的连接
<a name="az-availability-scenario-actions-pause-network-connectivity-s3-express"></a>

在可用区电源中断期间，无法访问存储在可用区中 S3 Express One Zone 目录存储桶中的数据。可用区可用[性：电源中断包括 aws: network: disrupt-connectivity，用于在实验期间中断](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#network-actions-reference)子网与受影响可用区中单区域目录存储桶之间的连接，从而导致区域端点数据平面 API 操作超时。使用此操作可以测试计算与存储位于同一可用区内的中断情况。

此操作以子网为目标。默认情况下，它以`AzImpairmentPower`带有名为、值为的标签的子网为目标。`DisruptSubnet`您可以将此标签添加到子网中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的子网，则会跳过此操作。

## 限制
<a name="az-availability-scenario-limitations"></a>
+ 此场景不包括[停止条件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html)。应将适用于您应用程序的正确停止条件添加到实验模板中。
+  在目标可用区中，在 EC2 上运行的 Amazon EKS 容器组将通过 EC2 Worker 节点终止，并且将阻止新 EC2 节点启动。但是，不支持在 AWS Fargate 上运行的 Amazon EKS 容器组。
+  在目标可用区中，在 EC2 上运行的 Amazon ECS 任务将通过 EC2 Worker 节点终止，并且将阻止新 EC2 节点启动。但是，不支持在 AWS Fargate 上运行的 Amazon ECS 任务。
+ 不支持带有两个可读备用数据库实例的 [Amazon RDS Multi-AZ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html#multi-az-db-clusters-migrating-to-with-read-replica)。在这种情况下，实例将被终止，RDS 将进行故障转移，容量将立即预置回受影响的可用区。受影响可用区中的可读备用副本将仍然可用。

## 要求
<a name="az-availability-scenario-requirements"></a>
+ 为 AWS FIS [实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)添加所需的权限。
+ 必须将资源标签应用于实验的目标资源。它们可以使用您自己的标签约定，也可以使用场景中定义的默认标签。

## Permissions
<a name="az-availability-scenario-permissions"></a>

ARC 区域自动切换使用 IAM 服务相关角色代表`AWSServiceRoleForZonalAutoshiftPracticeRun`您执行区域切换。此角色使用 IAM 托管策略[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSZonalAutoshiftPracticeRunSLRPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSZonalAutoshiftPracticeRunSLRPolicy.html)。您无需手动创建角色。当您在 AWS 管理控制台、或 AWS SDK 中根据可用区电源中断场景创建实验模板时，ARC 会为您创建服务相关角色。 AWS CLI有关更多信息，请参阅在 AR [C 中使用服务相关角色进行区域自动切换](https://docs.aws.amazon.com/r53recovery/latest/dg/using-service-linked-roles-zonal-autoshift.html)。

以下策略授予 AWS FIS 在 AZ Availability: Power Interruption 场景中执行实验所需的权限。必须将此策略附加到[实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowFISExperimentLoggingActionsCloudwatch",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:network-acl/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateNetworkAcl",
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateNetworkAcl",
            "Resource": "arn:aws:ec2:*:*:network-acl/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkAclEntry",
                "ec2:DeleteNetworkAcl"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:network-acl/*",
                "arn:aws:ec2:*:*:vpc/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateNetworkAcl",
            "Resource": "arn:aws:ec2:*:*:vpc/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeManagedPrefixLists",
                "ec2:DescribeSubnets",
                "ec2:DescribeNetworkAcls"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:ReplaceNetworkAclAssociation",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-acl/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "rds:FailoverDBCluster"
            ],
            "Resource": [
                "arn:aws:rds:*:*:cluster:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "rds:RebootDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:*:db:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "elasticache:DescribeReplicationGroups",
                "elasticache:InterruptClusterAzPower"
            ],
            "Resource": [
                "arn:aws:elasticache:*:*:replicationgroup:*"
            ]
        },
        {
            "Sid": "TargetResolutionByTags",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant"
            ],
            "Resource": [
                "arn:aws:kms:*:*:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:ViaService": "ec2.*.amazonaws.com"
                },
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVolumes"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:PauseVolumeIO"
            ],
            "Resource": "arn:aws:ec2:*:*:volume/*"
        },
        {
            "Sid": "AllowInjectAPI",
            "Effect": "Allow",
            "Action": [
                "ec2:InjectApiError"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "ec2:FisActionId": [
                        "aws:ec2:api-insufficient-instance-capacity-error",
                        "aws:ec2:asg-insufficient-instance-capacity-error"
                    ]
                }
            }
        },
        {
            "Sid": "DescribeAsg",
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

## 场景内容
<a name="az-availability-scenario-content"></a>

以下内容定义了场景。可以保存此 JSON，并使用 AWS [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html)命令行界面 (AWS CLI) Line CLI 中的命令创建[实验模板](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html)。有关该场景的最新版本，请访问 FIS 控制台中的场景库。

```
{
    "targets": {
        "IAM-role": {
            "resourceType": "aws:iam:role",
            "resourceArns": [],
            "selectionMode": "ALL"
        },
        "EBS-Volumes": {
            "resourceType": "aws:ec2:ebs-volume",
            "resourceTags": {
                "AzImpairmentPower": "ApiPauseVolume"
            },
            "selectionMode": "COUNT(1)",
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a"
            },
            "filters": [
                {
                    "path": "Attachments.DeleteOnTermination",
                    "values": [
                        "false"
                    ]
                }
            ]
        },
        "EC2-Instances": {
            "resourceType": "aws:ec2:instance",
            "resourceTags": {
                "AzImpairmentPower": "StopInstances"
            },
            "filters": [
                {
                    "path": "State.Name",
                    "values": [
                        "running"
                    ]
                },
                {
                    "path": "Placement.AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "selectionMode": "ALL"
        },
        "ASG": {
            "resourceType": "aws:ec2:autoscaling-group",
            "resourceTags": {
                "AzImpairmentPower": "IceAsg"
            },
            "selectionMode": "ALL"
        },
        "ASG-EC2-Instances": {
            "resourceType": "aws:ec2:instance",
            "resourceTags": {
                "AzImpairmentPower": "IceAsg"
            },
            "filters": [
                {
                    "path": "State.Name",
                    "values": [
                        "running"
                    ]
                },
                {
                    "path": "Placement.AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "selectionMode": "ALL"
        },
        "Subnet": {
            "resourceType": "aws:ec2:subnet",
            "resourceTags": {
                "AzImpairmentPower": "DisruptSubnet"
            },
            "filters": [
                {
                    "path": "AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "selectionMode": "ALL",
            "parameters": {}
        },
        "RDS-Cluster": {
            "resourceType": "aws:rds:cluster",
            "resourceTags": {
                "AzImpairmentPower": "DisruptRds"
            },
            "selectionMode": "ALL",
            "parameters": {
                "writerAvailabilityZoneIdentifiers": "us-east-1a"
            }
        },
        "ElastiCache-Cluster": {
            "resourceType": "aws:elasticache:replicationgroup",
            "resourceTags": {
                "AzImpairmentPower": "DisruptElasticache"
            },
            "selectionMode": "ALL",
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a"
            }
        }
    },
    "actions": {
        "Pause-Instance-Launches": {
            "actionId": "aws:ec2:api-insufficient-instance-capacity-error",
            "parameters": {
                "availabilityZoneIdentifiers": "us-east-1a",
                "duration": "PT30M",
                "percentage": "100"
            },
            "targets": {
                "Roles": "IAM-role"
            }
        },
        "Pause-EBS-IO": {
            "actionId": "aws:ebs:pause-volume-io",
            "parameters": {
                "duration": "PT30M"
            },
            "targets": {
                "Volumes": "EBS-Volumes"
            },
            "startAfter": [
                "Stop-Instances",
                "Stop-ASG-Instances"
            ]
        },
        "Stop-Instances": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "completeIfInstancesTerminated": "true",
                "startInstancesAfterDuration": "PT30M"
            },
            "targets": {
                "Instances": "EC2-Instances"
            }
        },
        "Pause-ASG-Scaling": {
            "actionId": "aws:ec2:asg-insufficient-instance-capacity-error",
            "parameters": {
                "availabilityZoneIdentifiers": "us-east-1a",
                "duration": "PT30M",
                "percentage": "100"
            },
            "targets": {
                "AutoScalingGroups": "ASG"
            }
        },
        "Stop-ASG-Instances": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "completeIfInstancesTerminated": "true",
                "startInstancesAfterDuration": "PT30M"
            },
            "targets": {
                "Instances": "ASG-EC2-Instances"
            }
        },
        "Pause-network-connectivity": {
            "actionId": "aws:network:disrupt-connectivity",
            "parameters": {
                "duration": "PT2M",
                "scope": "all"
            },
            "targets": {
                "Subnets": "Subnet"
            }
        },
        "Failover-RDS": {
            "actionId": "aws:rds:failover-db-cluster",
            "parameters": {},
            "targets": {
                "Clusters": "RDS-Cluster"
            }
        },
        "Pause-ElastiCache": {
            "actionId": "aws:elasticache:replicationgroup-interrupt-az-power",
            "parameters": {
                "duration": "PT30M"
            },
            "targets": {
                "ReplicationGroups": "ElastiCache-Cluster"
            }
        }
    },
    "stopConditions": [
        {
            "source": "aws:cloudwatch:alarm",
            "value": ""
        }
    ],
    "roleArn": "",
    "tags": {
        "Name": "AZ Impairment: Power Interruption"
    },
    "logConfiguration": {
        "logSchemaVersion": 2
    },
    "experimentOptions": {
        "accountTargeting": "single-account",
        "emptyTargetResolutionMode": "skip"
    },
    "description": "Affect multiple resource types in a single AZ, targeting by tags and explicit ARNs, to approximate power interruption in one AZ."
}
```

# AZ: Application Slowdown
<a name="az-application-slowdown-scenario"></a>

 您可以使用 “可用区：应用程序减速” 场景在单个可用区 (AZ) 内的资源之间引入额外的延迟。这种延迟会产生许多应用程序速度减慢的症状，即部分中断，有时被称为灰色故障。它会增加目标资源之间的网络流延迟。网络流量代表计算资源之间的流量，即在服务器、容器和服务之间传输请求、响应和其他通信的数据包。该场景可以帮助验证可观测性设置，调整警报阈值，发现应用程序对减速的敏感性，并练习关键的运营决策，例如AZ疏散。

 默认情况下，该场景会将选定可用区内目标资源之间的 100% 网络流量增加 200 毫秒的延迟，持续时间为 30 分钟。您可以使用 AWS FIS 控制台中的**编辑共享参数**对话框在场景级别调整以下参数，然后将其应用于基础操作：
+  可用区-您可以选择场景中要损坏的可用区。
+  毫秒 (ms) 延迟-根据应用程序的灵敏度和需求进行调整。例如，您可以为更敏感的应用程序设置较低的延迟，也可以设置更高的延迟以测试超时处理。考虑使用当前应用程序延迟的倍数作为基准。
+  流量百分比-减少以损害部分流量。例如，您可以添加 200 毫秒的延迟，影响 25% 的网络流，以进行更微妙的测试。
+  持续时间-设置实验的运行时长。您可以缩短时间以加快测试速度，也可以运行更长的持续测试。例如，将持续时间设置为 2 小时，以测试受损条件下的恢复机制。
+  资源定向-您可以使用标签（用于 EC2 或 Fargate 上的 EC2 实例或 ECS 任务）或标签（适用于 EC2 上的 EKS 容器）来定义整个场景的目标资源。您可以指定自己的标签和标签，也可以使用场景中提供的默认值。如果您不想使用标签或标签，则可以通过指定其他参数来编辑目标资源的操作。
+  自定义-如果您不想以 EC2 或 ECS 资源为目标，则可以将操作保留为默认标签。实验找不到任何可以瞄准的资源，因此该操作将被跳过。但是，如果您不想以 EKS 资源为目标，则应将 EKS 操作和目标完全从场景中删除，因为它需要提供 EKS 集群标识符。要进行更精细的自定义，您可以直接修改实验模板中的单个操作。

## 操作
<a name="az-application-slowdown-scenario-actions"></a>

 通过在网络流上引入额外的延迟，然后通过应用程序传播，以下操作共同帮助在单个可用区中创建应用程序速度减慢的许多症状。这些操作并行运行，默认情况下，每个操作都会增加 200 毫秒的延迟，持续 30 分钟。在这段时间之后，延迟将恢复到正常水平。该场景至少需要以下一种资源类型才能运行：EC2 实例、ECS 任务或 EKS 容器。

### ECS 网络延迟
<a name="az-application-slowdown-scenario-actions-ecs-network-latency"></a>

 AZ：应用程序减速包括 [aws: ecs:，用于引task-network-latency入 EC](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#task-network-latency) S 任务的延迟。该操作的目标是所选可用区中的任务。默认情况下，它的目标任务的[标签](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)名`AZApplicationSlowdown`为，值为`LatencyForECS`。您可以用自己的标签替换默认标签，也可以将场景标签添加到任务中。如果未找到有效任务，则将跳过此操作。在 ECS 上运行实验之前，应按照 [ECS 任务操作的设置步骤进行操作](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html)。

### EKS 网络延迟
<a name="az-application-slowdown-scenario-actions-eks-network-latency"></a>

 AZ：应用程序减速包括 [aws: eks:](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#pod-network-latency)，用于引入 EKS pod 的延迟。pod-network-latency该操作的目标是选定可用区中的 Pod。默认情况下，它的目标是集群中带有格式为 key=value 的标签的 pod。提供的默认标签是`AZApplicationSlowdown=LatencyForEKS`。你可以用自己的标签替换默认标签，也可以将此标签添加到你的 pod 中。如果未找到有效的 pod，则将跳过此操作。在 EKS 上运行实验之前，应按照 EK [S pod 操作的设置步骤进行操作](https://docs.aws.amazon.com/fis/latest/userguide/eks-pod-actions.html)。

### EC2 网络延迟
<a name="az-application-slowdown-scenario-actions-ec2-network-latency"></a>

 AZ：应用程序减速使用 a [ws: ssm: send-command 操作来运行-AWSFIS-Run Network-Laten](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#ssm-send-command) [cy-Sources 文档，引入 EC2 实例](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html#awsfis-run-network-latency-sources)的延迟。该操作的目标是所选可用区中的实例。默认情况下，它的目标实例的[标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)名`AZApplicationSlowdown`为，值为`LatencyForEC2`。您可以用自己的标签替换默认标签，也可以将此标签添加到您的实例中。如果未找到有效实例，则将跳过此操作。在使用 SSM 在 EC2 上运行实验之前，您应该[配置 AWS Systems Manager 代理](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html)。

## 限制
<a name="az-application-slowdown-scenario-limitations"></a>
+  此场景不包括[停止条件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html)。应将适用于您应用程序的正确停止条件添加到实验模板中。

## 要求
<a name="az-application-slowdown-scenario-requirements"></a>
+  向 AWS FIS [实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)添加所需的权限。
+  您需要将选定可用区内以下 3 种类型中的任何一种中的一种或多种资源作为目标：EC2 实例、ECS 任务或 EKS 容器。
+  场景中的所有目标都必须位于同一 VPC 中。

## Permissions
<a name="az-application-slowdown-scenario-permissions"></a>

 要运行此场景，您需要一个具有允许 FIS 代入角色的信任策略的 IAM 角色以及实验中目标资源类型的托管策略：EC2、ECS 和 EKS。当您从 AZ：应用程序减速场景中创建实验模板时，FIS 会使用信任策略和以下 AWS 托管策略为您创建角色：
+  [AWSFaultInjectionSimulatorEC2访问](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEC2Access) 
+  [AWSFaultInjectionSimulatorECSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorECSAccess) 
+  [AWSFaultInjectionSimulatorEKSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEKSAccess) 

 如果您使用现有 [IAM 角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)运行 “AZ：应用程序减速” 场景，则可以附加以下策略来向 AWS FIS 授予必要的权限：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeTasks",
            "Effect": "Allow",
            "Action": "ecs:DescribeTasks",
            "Resource": "*"
        },
        {
            "Sid": "DescribeContainerInstances",
            "Effect": "Allow",
            "Action": "ecs:DescribeContainerInstances",
            "Resource": "arn:aws:ecs:*:*:container-instance/*/*"
        },
        {
            "Sid": "DescribeInstances",
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        },
        {
            "Sid": "DescribeSubnets",
            "Effect": "Allow",
            "Action": "ec2:DescribeSubnets",
            "Resource": "*"
        },
        {
            "Sid": "DescribeCluster",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "TargetResolutionByTags",
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        },
        {
            "Sid": "SendCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ssm:*:*:managed-instance/*",
                "arn:aws:ssm:*:*:document/*"
            ]
        },
        {
            "Sid": "ListCommands",
            "Effect": "Allow",
            "Action": [
                "ssm:ListCommands"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CancelCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:CancelCommand"
            ],
            "Resource": "*"
        }
    ]
}
```

## 场景内容
<a name="az-application-slowdown-scenario-content"></a>

 以下内容定义了场景。可以保存此 JSON，并使用 AWS [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html)命令行界面 (AWS CLI) Line CLI 中的命令创建[实验模板](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html)。要获取最新版本的场景，请访问 FIS 控制台中的场景库并转到 “**内容**” 选项卡。

```
{
    "tags": {
        "Name": "AZ: Application Slowdown"
    },
    "description": "Add latency between resources within a single AZ.",
    "actions": {
        "LatencyForEKS": {
            "actionId": "aws:eks:pod-network-latency",
            "parameters": {
                "delayMilliseconds": "200",
                "duration": "PT30M",
                "flowsPercent": "100",
                "interface": "DEFAULT",
                "kubernetesServiceAccount": "fis-service-account",
                "sources": "us-east-1a"
            },
            "targets": {
                "Pods": "TargetsForEKS"
            }
        },
        "LatencyForEC2": {
            "actionId": "aws:ssm:send-command",
            "parameters": {
                "duration": "PT30M",
                "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Latency-Sources",
                "documentParameters": "{\"DelayMilliseconds\":\"200\",\"Sources\":\"us-east-1a\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}"
            },
            "targets": {
                "Instances": "TargetsForEC2"
            }
        },
        "LatencyForECS": {
            "actionId": "aws:ecs:task-network-latency",
            "parameters": {
                "delayMilliseconds": "200",
                "duration": "PT30M",
                "flowsPercent": "100",
                "installDependencies": "true",
                "sources": "us-east-1a",
                "useEcsFaultInjectionEndpoints": "true"
            },
            "targets": {
                "Tasks": "TargetsForECS"
            },
            "startAfter": []
        }
    },
    "targets": {
        "TargetsForEKS": {
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a",
                "clusterIdentifier": "",
                "namespace": "default",
                "selectorType": "labelSelector",
                "selectorValue": "AZApplicationSlowdown=LatencyForEKS"
            },
            "resourceType": "aws:eks:pod",
            "selectionMode": "ALL"
        },
        "TargetsForEC2": {
            "filters": [
                {
                    "path": "Placement.AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "AZApplicationSlowdown": "LatencyForEC2"
            },
            "resourceType": "aws:ec2:instance",
            "selectionMode": "ALL"
        },
        "TargetsForECS": {
            "filters": [
                {
                    "path": "AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "AZApplicationSlowdown": "LatencyForECS"
            },
            "resourceType": "aws:ecs:task",
            "selectionMode": "ALL"
        }
    },
    "experimentOptions": {
        "accountTargeting": "single-account",
        "emptyTargetResolutionMode": "skip"
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ]
}
```

# Cross-AZ: Traffic Slowdown
<a name="cross-az-traffic-slowdown-scenario"></a>

 您可以使用跨可用区：流量减速场景来注入数据包丢失，以中断和减慢可用区之间的流量（AZs）。数据包丢失会损害跨可用区的通信，即部分中断，有时被称为灰色故障。它会在目标资源之间的网络流量中注入数据包丢失。网络流量代表计算资源之间的流量，即在服务器、容器和服务之间传输请求、响应和其他通信的数据包。该场景可以帮助验证可观测性设置，调整警报阈值，发现跨可用区通信中的应用程序敏感性和依赖性，并练习关键运营决策，例如可用区撤离。

 默认情况下，该场景会向选定可用区的目标资源的 100% 出站网络流量注入 15% 的数据包丢失，持续时间为 30 分钟。您可以使用 AWS FIS 控制台中的**编辑共享参数**对话框在场景级别调整以下参数，然后将其应用于基础操作：
+  可用区-您可以选择要损坏的可用区，数据包丢失将从该可用区注入该区域 AZs 内的另一个可用区。
+  丢包-将数据包丢失调整为较低以进行细微的中断测试，例如5％，或更高以测试严重的通信降级和恢复机制，例如50％甚至100％以测试总体连接影响。
+  流量百分比-减少以损害部分流量。例如，您可以注入 15% 的数据包丢失，影响 25% 的网络流，以进行更微妙的测试。
+  持续时间-设置实验的运行时长。您可以缩短时间以加快测试速度，也可以运行更长的持续测试。例如，将持续时间设置为 2 小时，以帮助测试受损条件下的恢复机制。
+  资源定向-您可以使用标签（用于 EC2 或 Fargate 上的 EC2 实例或 ECS 任务）或标签（适用于 EC2 上的 EKS 容器）来定义整个场景的目标资源。您可以指定自己的标签和标签，也可以使用场景中提供的默认值。如果您不想使用标签或标签，则可以通过指定其他参数来编辑目标资源的操作。
+  自定义-如果您不想以 EC2 或 ECS 资源为目标，则可以将操作保留为默认标签。实验找不到任何可以瞄准的资源，因此该操作将被跳过。但是，如果您不想以 EKS 资源为目标，则应将 EKS 操作和目标完全从场景中删除，因为它需要提供 EKS 集群标识符。要进行更精细的自定义，您可以直接修改实验模板中的单个操作。

## 操作
<a name="cross-az-traffic-slowdown-scenario-actions"></a>

 以下操作共同导致从目标可用区到该区域其他可用区的出站通信在网络层出现数据包丢失，从而帮助缓解可用区之间流量减慢的症状。这些操作并行运行，默认情况下，每次注入 15% 的数据包丢失，持续 30 分钟。在这段时间之后，沟通恢复正常。该场景需要在所选可用区中至少有一种资源类型才能运行：EC2 实例、ECS 任务或 EKS 容器。

### ECS 网络数据包丢失
<a name="cross-az-traffic-slowdown-scenario-actions-ecs-network-packet-loss"></a>

 跨可用区：流量减速包括 [aws: ecs:，用于task-network-packet-loss为 ECS](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#task-network-packet-loss) 任务注入丢包。该操作以所选可用区中的任务为目标，并会影响其与该区域 AZs 中所有其他任务的出站通信。您可以通过编辑操作和在`Sources`字段中添加或移 AZs 除来进一步自定义影响范围。默认情况下，它的目标任务的[标签](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html)名`CrossAZTrafficSlowdown`为，值为`PacketLossForECS`。您可以用自己的标签替换默认标签，也可以将场景标签添加到任务中。如果未找到有效任务，则将跳过此操作。在 ECS 上运行实验之前，应按照 [ECS 任务操作的设置步骤进行操作](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html)。

### EKS 网络数据包丢失
<a name="cross-az-traffic-slowdown-scenario-actions-eks-network-packet-loss"></a>

 跨可用区：流量减速包括 a [ws: eks:，用于为 pod-network-packet-loss](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#pod-network-packet-loss) EKS pod 注入丢包。该操作以所选可用区中的 Pod 为目标，并会影响它们与该区域 AZs 内所有其他容器的出站通信。您可以通过编辑操作和在`Sources`字段中添加或移 AZs 除来进一步自定义影响范围。默认情况下，它的目标是集群中带有格式为 key=value 的标签的 pod。提供的默认标签是`CrossAZTraffic=PacketLossForEKS`。你可以用自己的标签替换默认标签，也可以将此标签添加到你的 pod 中。如果未找到有效的 pod，则将跳过此操作。在 EKS 上运行实验之前，应按照 EK [S pod 操作的设置步骤进行操作](https://docs.aws.amazon.com/fis/latest/userguide/eks-pod-actions.html)。

### EC2 网络数据包丢失
<a name="cross-az-traffic-slowdown-scenario-actions-ec2-network-packet-loss"></a>

 跨可用区：流量减速使用 a [ws: ssm: send-command 操作运行-Network-AWSFIS-Run](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#ssm-send-command) [Packet-Loss-Sources 文档，为 EC2 实例注入数据包丢失，并损害它们与该地区所有其他实例的出站通](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html#awsfis-run-network-packet-loss-sources)信。 AZs 您可以通过编辑操作和在`Sources`字段中添加或移 AZs 除来进一步自定义影响范围。该操作的目标是所选可用区中的实例。默认情况下，它的目标实例的[标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)名`CrossAZTrafficSlowdown`为，值为`PacketLossForEC2`。您可以用自己的标签替换默认标签，也可以将此标签添加到您的实例中。如果未找到有效实例，则将跳过此操作。在使用 SSM 在 EC2 上运行实验之前，您应该[配置 AWS Systems Manager 代理](https://docs.aws.amazon.com/fis/latest/userguide/actions-ssm-agent.html)。

## 限制
<a name="cross-az-traffic-slowdown-scenario-limitations"></a>
+  此场景不包括[停止条件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html)。应将适用于您应用程序的正确停止条件添加到实验模板中。

## 要求
<a name="cross-az-traffic-slowdown-scenario-requirements"></a>
+  向 AWS FIS [实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)添加所需的权限。
+  您需要将选定可用区内以下 3 种类型中的任何一种中的一种或多种资源作为目标：EC2 实例、ECS 任务或 EKS 容器。
+  场景中的所有目标都必须位于同一 VPC 中。

## Permissions
<a name="cross-az-traffic-slowdown-scenario-permissions"></a>

 要运行此场景，您需要一个具有允许 FIS 代入角色的信任策略的 IAM 角色以及实验中目标资源类型的托管策略：EC2、ECS 和 EKS。当您根据跨可用区：流量减速场景创建实验模板时，FIS 会使用信任策略和以下 AWS 托管策略为您创建角色：
+  [AWSFaultInjectionSimulatorEC2访问](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEC2Access) 
+  [AWSFaultInjectionSimulatorECSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorECSAccess) 
+  [AWSFaultInjectionSimulatorEKSAccess](https://docs.aws.amazon.com/fis/latest/userguide/security-iam-awsmanpol.html#AWSFaultInjectionSimulatorEKSAccess) 

 如果您使用现有 [IAM 角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)运行跨可用区：流量减速场景，则可以附加以下策略向 AWS FIS 授予必要的权限：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeTasks",
            "Effect": "Allow",
            "Action": "ecs:DescribeTasks",
            "Resource": "*"
        },
        {
            "Sid": "DescribeContainerInstances",
            "Effect": "Allow",
            "Action": "ecs:DescribeContainerInstances",
            "Resource": "arn:aws:ecs:*:*:container-instance/*/*"
        },
        {
            "Sid": "DescribeInstances",
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        },
        {
            "Sid": "DescribeSubnets",
            "Effect": "Allow",
            "Action": "ec2:DescribeSubnets",
            "Resource": "*"
        },
        {
            "Sid": "DescribeCluster",
            "Effect": "Allow",
            "Action": "eks:DescribeCluster",
            "Resource": "arn:aws:eks:*:*:cluster/*"
        },
        {
            "Sid": "TargetResolutionByTags",
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        },
        {
            "Sid": "SendCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ssm:*:*:managed-instance/*",
                "arn:aws:ssm:*:*:document/*"
            ]
        },
        {
            "Sid": "ListCommands",
            "Effect": "Allow",
            "Action": [
                "ssm:ListCommands"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CancelCommand",
            "Effect": "Allow",
            "Action": [
                "ssm:CancelCommand"
            ],
            "Resource": "*"
        }
    ]
}
```

## 场景内容
<a name="cross-az-traffic-slowdown-scenario-content"></a>

 以下内容定义了场景。可以保存此 JSON，并使用 AWS [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html)命令行界面 (AWS CLI) Line CLI 中的命令创建[实验模板](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html)。要获取最新版本的场景，请访问 FIS 控制台中的场景库并转到 “**内容**” 选项卡。

```
{
    "tags": {
        "Name": "Cross-AZ: Traffic Slowdown"
    },
    "description": "Inject packet loss to disrupt and slow down traffic between AZs.",
    "actions": {
        "PacketLossForEC2": {
            "actionId": "aws:ssm:send-command",
            "parameters": {
                "duration": "PT30M",
                "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-Network-Packet-Loss-Sources",
                "documentParameters": "{\"Sources\":\"us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f\",\"LossPercent\":\"15\",\"Interface\":\"DEFAULT\",\"TrafficType\":\"egress\",\"DurationSeconds\":\"1800\",\"FlowsPercent\":\"100\",\"InstallDependencies\":\"True\"}"
            },
            "targets": {
                "Instances": "TargetsForEC2"
            }
        },
        "PacketLossForECS": {
            "actionId": "aws:ecs:task-network-packet-loss",
            "parameters": {
                "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f",
                "lossPercent": "15",
                "duration": "PT30M",
                "flowsPercent": "100",
                "installDependencies": "true",
                "useEcsFaultInjectionEndpoints": "true"
            },
            "targets": {
                "Tasks": "TargetsForECS"
            }
        },
        "PacketLossForEKS": {
            "actionId": "aws:eks:pod-network-packet-loss",
            "parameters": {
                "sources": "us-east-1b,us-east-1c,us-east-1d,us-east-1e,us-east-1f",
                "lossPercent": "15",
                "duration": "PT30M",
                "flowsPercent": "100",
                "interface": "DEFAULT",
                "kubernetesServiceAccount": "fis-service-account"
            },
            "targets": {
                "Pods": "TargetsForEKS"
            }
        }
    },
    "targets": {
        "TargetsForEC2": {
            "filters": [
                {
                    "path": "Placement.AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "CrossAZTrafficSlowdown": "PacketLossForEC2"
            },
            "resourceType": "aws:ec2:instance",
            "selectionMode": "ALL"
        },
        "TargetsForECS": {
            "filters": [
                {
                    "path": "AvailabilityZone",
                    "values": [
                        "us-east-1a"
                    ]
                }
            ],
            "resourceTags": {
                "CrossAZTrafficSlowdown": "PacketLossForECS"
            },
            "resourceType": "aws:ecs:task",
            "selectionMode": "ALL"
        },
        "TargetsForEKS": {
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a",
                "clusterIdentifier": "",
                "namespace": "default",
                "selectorType": "labelSelector",
                "selectorValue": "CrossAZTrafficSlowdown=PacketLossForEKS"
            },
            "resourceType": "aws:eks:pod",
            "selectionMode": "ALL"
        }
    },
    "experimentOptions": {
        "accountTargeting": "single-account",
        "emptyTargetResolutionMode": "skip"
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ]
}
```

# Cross-Region: Connectivity
<a name="cross-region-scenario"></a>

您可以使用该Cross-Region: Connectivity场景来阻止从实验区域到目标区域的应用程序网络流量，并暂停 Amazon S3 和 Amazon DynamoDB 多区域全局表的跨区域复制。“跨区域：连接”会影响您运行实验所在区域（*实验区域*）的出站应用程序流量。可能不会阻止源自您希望与*实验区域*隔离的区域（*目标区域*）的无状态入站流量。可能不会阻止源自 AWS 托管服务的流量。

此场景可用于进行如下演示：当无法从实验区域访问目标区域中的资源时，多区域应用程序能够按预期运行。它包括通过以中转网关和路由表为目标来阻止从实验区域到目标区域的网络流量。它还会暂停 S3 和 DynamoDB 全局表的跨区域复制。默认情况下，未找到目标的操作将被跳过。

## 操作
<a name="cross-region-scenario-actions"></a>

以下操作相结合，会阻止所含 AWS 服务的跨区域连接。这些操作并行运行。默认情况下，该场景会阻止流量 3 小时，您最多可以将时间延长到 12 小时。

### 中断中转网关连接
<a name="cross-region-scenario-actions-disrupt-transit-gateway-connectivity"></a>

Cross Region: Connectivity包括 [aws: network: transit-gateway-disrupt-cross-region-connectivity，用于阻止从 VPCs 实验区域到 VPCs 通过公交网关连接](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#network-actions-reference)*的目标区域**的跨区域*网络流量。这不会影响对*实验区域*中的 VPC 端点的访问，但会阻止从*实验区域*发往*目标区域*中的 VPC 端点的流量。

此操作以连接*实验区域*和*目标区域*的中转网关为目标。默认情况下，它以[标签](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-transit-gateways.html#tgw-tagging)名为 `DisruptTransitGateway`、值为 `Allowed` 的中转网关为目标。您可以将此标签添加到中转网关中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的中转网关，则会跳过此操作。

### 中断子网连接
<a name="cross-region-scenario-actions-disrupt-subnet-connectivity"></a>

Cross Region: Connectivity*包括 [aws: network: route-table-disrupt-cross-region-connec](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#network-actions-reference) tivity，用于阻止从 VPCs 实验区域*到目标区域*公有 AWS IP 区块的跨区域网络流量。*这些公有 IP 块包括*目标区域*中的 AWS 服务端点（如 S3 区域端点）和托管服务的 AWS IP 块（如用于负载均衡器和 Amazon API Gateway 的 IP 地址）。此操作还会阻止通过跨区域 VPC 对等连接从*实验区域*到*目标区域*的网络连接。它不会影响对*实验区域*中 VPC 端点的访问，但会阻止从*实验区域*发往*目标区域*中 VPC 端点的流量。

此操作以实验区域中的子网为目标。默认情况下，它以[标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)名为 `DisruptSubnet`、值为 `Allowed` 的子网为目标。您可以将此标签添加到子网中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的子网，则会跳过此操作。

### 中断 VPC 终端节点连接
<a name="cross-region-scenario-actions-disrupt-vpc-endpoint-connectivity"></a>

Cross Region: Connectivity包括 [aws: network：](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#network-actions-reference)中disrupt-vpc-endpoint断与目标 VPC 终端节点关联的服务的连接。例如，如果 VPC 终端节点创建了指向 com.amazonaws.us-east-1.ec2 的私有链接，则与该服务的连接将中断。

此操作的目标是实验区域中的 VPC 终端节点。默认情况下，它以接口 VPC 终端节点为目标， DisruptVpcEndpoint 其[标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)名为值`Allowed`。您可以将此标签添加到您的 VPC 终端节点，也可以将默认标签替换为实验模板中您自己的标签。默认情况下，如果未找到有效的 VPC 终端节点，则会跳过此操作。

### 暂停 S3 复制
<a name="cross-region-scenario-actions-pause-s3-replication"></a>

Cross Region: Connectivity包括 [aws: s3: bucket-pause-replication](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#s3-actions-reference-fis) 用于暂停 S3 从*实验区域*向目标存储桶的*目标区域*的复制。从*目标区域*到*实验区域*的复制将不受影响。该场景结束后，存储桶复制将从暂停之处恢复。请注意，复制直至所有对象保持同步所需的时间将因实验持续时间和对象上传到存储桶的速度而异。

此操作的目标是实验区域中启用了[跨区域复制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)（CRR）到目标区域 S3 存储桶的 S3 存储桶。默认情况下，它以[标签](https://docs.aws.amazon.com/AmazonS3/latest/userguide/view-bucket-properties.html)名为 `DisruptS3`、值为 `Allowed` 的存储桶为目标。您可以将此标签添加到存储桶中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的存储桶，则会跳过此操作。

### 暂停 DynamoDB 复制
<a name="cross-region-scenario-actions-pause-dynamodb-replication"></a>

Cross-Region: Connectivity包括 [aws: dynamodb: global-table-pause-replication](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#dynamodb-actions-reference) 用于暂停实验区域与所有其他区域（包括目标区域）之间的复制。这可防止进出*实验区域*的复制，但不会影响其他区域之间的复制。该场景结束后，表复制将从暂停之处恢复。请注意，复制直至所有数据保持同步所需的时间将因实验持续时间和表的更改速率而异。

此操作同时针对实验区域中的 DynamoDB 多区域以及最终一致的全局表。默认情况下，它以[标签](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)名为 `DisruptDynamoDb`、值为 `Allowed` 的表为目标。您可以将此标签添加到表中，也可以在实验模板中用自己的标签替换默认标签。默认情况下，如果找不到有效的全局表，则会跳过此操作。

### 暂停 MemoryDB 多区域复制
<a name="cross-region-scenario-actions-pause-memorydb-multi-region-replication"></a>

Cross-Region: Connectivity包括 [aws: memorydb: multi-region-cluster-pause-replic](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#memorydb-actions-reference) ation，用于暂停从实验区域中的区域成员集群向目标多区域集群中其余集群的复制。其他区域成员集群之间的复制将不受影响。场景结束后，复制将从暂停点开始恢复。请注意，在成员集群之间同步数据的复制时间将因实验持续时间和写入集群的数据速率而异。

此操作的目标是 MemoryDB 多区域集群，其区域成员位于实验区域。默认情况下，它以多区域集群为目标，其[标签](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)名`DisruptMemoryDB`为，值为。`Allowed`您可以将此标签添加到您的多区域集群中，也可以将默认标签替换为实验模板中您自己的标签。默认情况下，如果找不到有效的集群，则会跳过此操作。

## 限制
<a name="cross-region-scenario-limitations"></a>
+ 此场景不包括[停止条件](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html)。应将适用于您应用程序的正确停止条件添加到实验模板中。

## 要求
<a name="cross-region-scenario-requirements"></a>
+ 向 AWS FIS [实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)添加所需的权限。
+ 必须将资源标签应用于实验的目标资源。它们可以使用您自己的标签约定，也可以使用场景中定义的默认标签。

## Permissions
<a name="cross-region-scenario-permissions"></a>

以下策略授予 AWS FIS 在 Cross-Region: Connectivity 场景中执行实验所需的权限。必须将此策略附加到[实验角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RouteTableDisruptConnectivity1",
            "Effect": "Allow",
            "Action": "ec2:CreateRouteTable",
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity2",
            "Effect": "Allow",
            "Action": "ec2:CreateRouteTable",
            "Resource": "arn:aws:ec2:*:*:vpc/*"
        },
        {
            "Sid": "RouteTableDisruptConnectivity21",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateRouteTable",
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity3",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateNetworkInterface",
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity4",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:prefix-list/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateManagedPrefixList",
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity5",
            "Effect": "Allow",
            "Action": "ec2:DeleteRouteTable",
            "Resource": [
                "arn:aws:ec2:*:*:route-table/*",
                "arn:aws:ec2:*:*:vpc/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity6",
            "Effect": "Allow",
            "Action": "ec2:CreateRoute",
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity7",
            "Effect": "Allow",
            "Action": "ec2:CreateNetworkInterface",
            "Resource": "arn:aws:ec2:*:*:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity8",
            "Effect": "Allow",
            "Action": "ec2:CreateNetworkInterface",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Sid": "RouteTableDisruptConnectivity9",
            "Effect": "Allow",
            "Action": "ec2:DeleteNetworkInterface",
            "Resource": "arn:aws:ec2:*:*:network-interface/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity10",
            "Effect": "Allow",
            "Action": "ec2:CreateManagedPrefixList",
            "Resource": "arn:aws:ec2:*:*:prefix-list/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity11",
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteManagedPrefixList",
                "ec2:ModifyManagedPrefixList"
            ],
            "Resource": "arn:aws:ec2:*:*:prefix-list/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "EC2DescribeResources",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeVpcs",
                "ec2:DescribeVpcPeeringConnections",
                "ec2:DescribeManagedPrefixLists",
                "ec2:DescribeSubnets",
                "ec2:DescribeRouteTables",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeTransitGatewayPeeringAttachments",
                "ec2:DescribeTransitGatewayAttachments",
                "ec2:DescribeTransitGateways",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        },
        {
            "Sid": "RouteTableDisruptConnectivity14",
            "Effect": "Allow",
            "Action": "ec2:ReplaceRouteTableAssociation",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:route-table/*"
            ]
        },
        {
            "Sid": "RouteTableDisruptConnectivity15",
            "Effect": "Allow",
            "Action": "ec2:GetManagedPrefixListEntries",
            "Resource": "arn:aws:ec2:*:*:prefix-list/*"
        },
        {
            "Sid": "RouteTableDisruptConnectivity16",
            "Effect": "Allow",
            "Action": "ec2:AssociateRouteTable",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:route-table/*"
            ]
        },
        {
            "Sid": "RouteTableDisruptConnectivity17",
            "Effect": "Allow",
            "Action": "ec2:DisassociateRouteTable",
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "RouteTableDisruptConnectivity18",
            "Effect": "Allow",
            "Action": "ec2:DisassociateRouteTable",
            "Resource": "arn:aws:ec2:*:*:subnet/*"
        },
        {
            "Sid": "RouteTableDisruptConnectivity19",
            "Effect": "Allow",
            "Action": "ec2:ModifyVpcEndpoint",
            "Resource": "arn:aws:ec2:*:*:route-table/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "TransitGatewayDisruptConnectivity1",
            "Effect": "Allow",
            "Action": [
                "ec2:DisassociateTransitGatewayRouteTable",
                "ec2:AssociateTransitGatewayRouteTable"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:transit-gateway-route-table/*",
                "arn:aws:ec2:*:*:transit-gateway-attachment/*"
            ]
        },
        {
            "Sid": "S3CrossRegion1",
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Sid": "S3CrossRegion3",
            "Effect": "Allow",
            "Action": "s3:PauseReplication",
            "Resource": "arn:aws:s3:::*",
            "Condition": {
                "StringLike": {
                    "s3:DestinationRegion": "*"
                }
            }
        },
        {
            "Sid": "S3CrossRegion4",
            "Effect": "Allow",
            "Action": [
                "s3:GetReplicationConfiguration",
                "s3:PutReplicationConfiguration"
            ],
            "Resource": "arn:aws:s3:::*",
            "Condition": {
                "BoolIfExists": {
                    "s3:isReplicationPauseRequest": "true"
                }
            }
        },
        {
            "Sid": "DynamoDbPauseReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:PutResourcePolicy",
                "dynamodb:GetResourcePolicy",
                "dynamodb:DeleteResourcePolicy"
            ],
            "Resource": [
                "arn:aws:dynamodb:*:*:table/*"
            ]
        },
        {
            "Sid": "DynamoDbMrscPauseReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:InjectError"
            ],
            "Resource": ["*"]
        },
        {
            "Sid": "ResolveResourcesViaTags",
            "Effect": "Allow",
            "Action": "tag:GetResources",
            "Resource": "*"
        },
        {
            "Sid": "MemDbCrossRegion",
            "Effect": "Allow",
            "Action": [
                "memorydb:DescribeMultiRegionClusters",
                "memorydb:PauseMultiRegionClusterReplication"
            ],
            "Resource": [
                "arn:aws:memorydb::*:multiregioncluster/*"
            ]
        },
        {
            "Sid": "DisruptVPCE1",
            "Effect": "Allow",
            "Action": "ec2:CreateSecurityGroup",
            "Resource": [
                "arn:aws:ec2:*:*:vpc/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        },
        {
            "Sid": "DisruptVPCE2",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:*:*:security-group/*",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "CreateSecurityGroup",
                    "aws:RequestTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "DisruptVPCE3",
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress"
            ],
            "Resource": "arn:aws:ec2:*:*:security-group/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/managedByFIS": "true"
                }
            }
        },
        {
            "Sid": "DisruptVPCE4",
            "Effect": "Allow",
            "Action": "vpce:AllowMultiRegion",
            "Resource": "arn:aws:ec2:*:*:vpc-endpoint/*"
        },
        {
            "Sid": "ModifyVPCE",
            "Effect": "Allow",
            "Action": "ec2:ModifyVpcEndpoint",
            "Resource": [
                "arn:aws:ec2:*:*:vpc-endpoint/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}
```

## 场景内容
<a name="cross-region-scenario-content"></a>

以下内容定义了场景。可以保存此 JSON，并使用 AWS [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html)命令行界面 (AWS CLI) Line CLI 中的命令创建[实验模板](https://docs.aws.amazon.com/fis/latest/userguide/experiment-templates.html)。有关该场景的最新版本，请访问 FIS 控制台中的场景库。

```
{
        "targets": {
                "Transit-Gateway": {
                        "resourceType": "aws:ec2:transit-gateway",
                        "resourceTags": {
                                "TgwTag": "TgwValue"
                        },
                        "selectionMode": "ALL"
                },
                "Subnet": {
                        "resourceType": "aws:ec2:subnet",
                        "resourceTags": {
                                "SubnetKey": "SubnetValue"
                        },
                        "selectionMode": "ALL",
                        "parameters": {}
                },
                "VPC-Endpoint": {
                    "resourceType": "aws:ec2:vpc-endpoint",
                    "resourceTags": {
                        "DisruptPrivateLink": "Allowed"
                    },
                    "selectionMode": "ALL"
                },
                "S3-Bucket": {
                        "resourceType": "aws:s3:bucket",
                        "resourceTags": {
                                "S3Impact": "Allowed"
                        },
                        "selectionMode": "ALL"
                },
                "DynamoDB-Global-Table": {
                        "resourceType": "aws:dynamodb:global-table",
                        "resourceTags": {
                                "DisruptDynamoDb": "Allowed"
                        },
                        "selectionMode": "ALL"
                },
                "MemoryDB-Multi-Region-Cluster": {
                    "resourceType": "aws:memorydb:multi-region-cluster",
                    "resourceTags": {
                        "DisruptMemoryDb": "Allowed"
                    },
                    "selectionMode": "ALL"
                }
        },
        "actions": {
                "Disrupt-Transit-Gateway-Connectivity": {
                        "actionId": "aws:network:transit-gateway-disrupt-cross-region-connectivity",
                        "parameters": {
                                "duration": "PT3H",
                                "region": "eu-west-1"
                        },
                        "targets": {
                                "TransitGateways": "Transit-Gateway"
                        }
                },
                "Disrupt-Subnet-Connectivity": {
                        "actionId": "aws:network:route-table-disrupt-cross-region-connectivity",
                        "parameters": {
                                "duration": "PT3H",
                                "region": "eu-west-1"
                        },
                        "targets": {
                                "Subnets": "Subnet"
                        }
                },
                "Disrupt-Vpc-Endpoint": {
                        "actionId": "aws:network:disrupt-vpc-endpoint",
                        "parameters": {
                                "duration": "PT3H"
                        },
                        "targets": {
                                "VPCEndpoints": "VPC-Endpoint"
                        }
                },
                "Pause-S3-Replication": {
                        "actionId": "aws:s3:bucket-pause-replication",
                        "parameters": {
                                "duration": "PT3H",
                                "region": "eu-west-1"
                        },
                        "targets": {
                                "Buckets": "S3-Bucket"
                        }
                },
                "Pause-DynamoDB-Replication": {
                        "actionId": "aws:dynamodb:global-table-pause-replication",
                        "parameters": {
                                "duration": "PT3H"
                        },
                        "targets": {
                                "Tables": "DynamoDB-Global-Table"
                        }
                },
                "Pause-MemoryDB-Multi-Region-Cluster-Replication": {
                    "actionId": "aws:memorydb:multi-region-cluster-pause-replication",
                    "parameters": {
                        "duration": "PT3H",
                        "region": "eu-west-1"
                    },
                    "targets": {
                        "MultiRegionClusters": "MemoryDB-Multi-Region-Cluster"
                    }
                }
        },
        "stopConditions": [
                {
                        "source": "none"
                }
        ],
        "roleArn": "",
        "logConfiguration": {
                "logSchemaVersion": 2
        },
        "tags": {
                "Name": "Cross-Region: Connectivity"
        },
        "experimentOptions": {
                "accountTargeting": "single-account",
                "emptyTargetResolutionMode": "skip"
        },
        "description": "Block application network traffic from experiment Region to target Region and pause cross-Region replication"
}
```