

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

# 教程：使用 AWS FIS 停止和启动测试实例
<a name="fis-tutorial-stop-instances"></a>

您可以使用 AWS 故障注入服务 (AWS FIS) 来测试您的应用程序如何处理实例停止和启动。使用本教程创建实验模板，该模板使用 AWS FIS `aws:ec2:stop-instances` 操作停止一个实例，然后停止第二个实例。

## 先决条件
<a name="stop-instances-prerequisites"></a>

要完成本教程，请确保您已做好以下准备：
+ 在您的账户中启动两个测试 EC2 实例。启动实例后，请记下 IDs 两个实例的情况。
+ 创建一个 IAM 角色以使 AWS FIS 服务能够代表您执行`aws:ec2:stop-instances`操作。有关更多信息，请参阅 [适用于 AWS FIS 实验的 IAM 角色](getting-started-iam-service-role.md)。
+ 确保您可以访问 AWS FIS。有关更多信息，请参阅 [AWS FIS 策略示例](security_iam_id-based-policy-examples.md)。

## 步骤 1：创建实验模板
<a name="stop-instances-create-template"></a>

使用 AWS FIS 控制台创建实验模板。您可以在模板中指定两项操作，分别按顺序运行三分钟。第一个操作会停止 AWS FIS 随机选择的其中一个测试实例。第二项操作会停止所有测试实例。

**创建实验模板**

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

1. 在导航窗格中，选择**实验模板**。

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

1. 对于**步骤 1，指定模板详细信息**，请执行以下操作：

   1. 在**描述和名称**中，输入模板的描述，例如`Amazon S3 Network Disrupt Connectivity`。

   1. 选择 “**下一**步”，然后移至**步骤 2，指定操作和目标**。

1. 对于**操作**，请执行以下操作：

   1. 选择**添加操作**。

   1. 输入操作名称。例如，输入 **stopOneInstance**。

   1. 对于**操作类型**，选择 **aws:ec2:stop-instances**。

   1. 对于 **Targ** et，请保留 AWS FIS 为你创建的目标。

   1. 对于**操作参数**，**在持续时间后启动实例**，指定 3 分钟 (PT3M)。

   1. 选择**保存**。

1. 对于**目标**，请执行以下操作：

   1.  AWS 为 FIS 在上一步中自动为您创建的目标选择 “**编辑**”。

   1. 将默认名称替换为更具描述性的名称。例如，输入 **oneRandomInstance**。

   1. 验证**资源类型**是否为 **aws:ec2:instance**。

   1. 对于 **Target 方法** IDs，选择**资源**，然后选择两个测试实例中的一个。 IDs 

   1. 对于**选择模式**，选择**计数**。对于**资源数量**，输入 **1**。

   1. 选择**保存**。

1. 选择**添加目标**，然后执行以下操作：

   1. 输入目标名称。例如，输入 **bothInstances**。

   1. 对于**资源类型**，选择 **aws:ec2:instance**。

   1. 对于 **Target 方法** IDs，选择**资源**，然后选择两个测试实例中的一个。 IDs 

   1. 对于**选择模式**，选择**全部**。

   1. 选择**保存**。

1. 通过**操作**部分，选择**添加操作**。执行以下操作：

   1. 对于**名称**，输入操作名称。例如，输入 **stopBothInstances**。

   1. 对于**操作类型**，选择 **aws:ec2:stop-instances**。

   1. 对于**稍后开始**，选择您添加的第一项操作 (**stopOneInstance**)。

   1. 对于**目标**，选择您添加的第二个目标 (**bothInstances**)。

   1. 对于**操作参数**，**在持续时间后启动实例**，指定 3 分钟 (PT3M)。

   1. 选择**保存**。

1. 选择**下一步**进入**步骤 3，配置服务访问权限**。

1. 对于**服务访问权限**，选择**使用现有 IAM 角色**，然后选择您按照本教程先决条件中所述创建的 IAM 角色。如未显示此角色，请验证其是否具有必要的信任关系。有关更多信息，请参阅 [适用于 AWS FIS 实验的 IAM 角色](getting-started-iam-service-role.md)。

1. 选择**下一步**进入**步骤 4，配置可选设置**。

1. （可选）对于**标签**，选择**添加新标签**，然后指定标签键和标签值。您添加的标签将应用于实验模板，而不是应用于使用此模板运行的实验。

1. 选择 “**下一**步” 进入**步骤 5，“查看并创建”**。

1. 查看模板并选择**创建实验模板**。当提示您确认时，输入`create`，然后选择**创建实验模板**。

**（可选）查看 JSON 格式的实验模板**  
选择**导出**选项卡。以下是通过前述控制台程序创建的 JSON 示例。

```
{
    "description": "Test instance stop and start",
    "targets": {
        "bothInstances": {
            "resourceType": "aws:ec2:instance",
            "resourceArns": [
                "arn:aws:ec2:region:123456789012:instance/instance_id_1",
                "arn:aws:ec2:region:123456789012:instance/instance_id_2"
            ],
            "selectionMode": "ALL"
        },
        "oneRandomInstance": {
            "resourceType": "aws:ec2:instance",
            "resourceArns": [
                "arn:aws:ec2:region:123456789012:instance/instance_id_1",
                "arn:aws:ec2:region:123456789012:instance/instance_id_2"
            ],
            "selectionMode": "COUNT(1)"
        }
    },
    "actions": {
        "stopBothInstances": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "startInstancesAfterDuration": "PT3M"
            },
            "targets": {
                "Instances": "bothInstances"
            },
            "startAfter": [
                "stopOneInstance"
            ]
        },
        "stopOneInstance": {
            "actionId": "aws:ec2:stop-instances",
            "parameters": {
                "startInstancesAfterDuration": "PT3M"
            },
            "targets": {
                "Instances": "oneRandomInstance"
            }
        }
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "roleArn": "arn:aws:iam::123456789012:role/AllowFISEC2Actions",
    "tags": {}
}
```

## 步骤 2：开始实验
<a name="stop-instances-start-experiment"></a>

您可以使用创建好的实验模板开始实验。

**开始实验**

1. 您应该位于刚刚创建的实验模板的详细信息页面。否则，请选择**实验模板**，然后选择实验模板 ID，打开详细信息页面。

1. 请选择**开始实验**。

1. （可选）要为实验添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 请选择**开始实验**。当系统提示您确认时，输入 **start**，然后选择**开始实验**。

## 步骤 3：跟踪实验进度
<a name="stop-instances-track-experiment"></a>

您可以跟踪正在运行的实验进度，直到实验完成、停止或失败。

**跟踪实验进度**

1. 您应该位于刚开始的实验的详细信息页面。否则，请选择**实验**，然后选择实验 ID，打开详细信息页面。

1. 要查看实验状态，请在**详细信息**窗格中选择**状态**。有关更多信息，请参阅[实验状态](view-experiment-progress.md#experiment-states)。

1. 当实验状态为**正在运行**时，转到下一步。

## 步骤 4：验证实验结果
<a name="stop-instances-verify-experiment-result"></a>

您可以验证实验是否如预期般停止并启动实例。

**验证实验结果**

1. 在新的浏览器选项卡或窗口[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)中打开 Amazon EC2 控制台。这使您可以继续在 AWS FIS 控制台中跟踪实验进度，同时在 Amazon 控制 EC2 台中查看实验结果。

1. 在导航窗格中，选择**实例**。

1. 当第一个操作的状态从 “**待处理**” 变AWS 为 “**正在运行**”（FIS 控制台）时，其中一个目标实例的状态将从 “**正在运行**” 变为 “**已停止**”（Amazon EC2 控制台）。

1. 三分钟后，第一项操作和第二项操作的状态会分别更改为**已完成**和**正在运行**，同时另一个目标实例的状态会更改为**已停止**。

1. 三分钟后，第二项操作的状态更改为**已完成**，目标实例的状态更改为**正在运行**，实验状态更改为**已完成**。

## 步骤 5：清除
<a name="stop-instances-cleanup"></a>

如果您不再需要为此实验创建的测试 EC2 实例，则可以将其终止。

**终止实例**

1. 打开亚马逊 EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**实例**。

1. 选择两个测试实例，然后依次选择 **Instance state**（实例状态）、**Terminate instance**（终止实例）。

1. 当系统提示您确认时，选择**终止**。

如果您不再需要实验模板，可以将其删除。

**使用 AWS FIS 控制台删除实验模板**

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

1. 在导航窗格中，选择**实验模板**。

1. 选择实验模板，然后依次选择**操作**和**删除实验模板**。

1. 当系统提示您确认时，输入 **delete**，然后选择**删除实验模板**。