教程:使用 AWS FIS 测试实例停止和启动 - AWS 故障注入服务

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

教程:使用 AWS FIS 测试实例停止和启动

您可以使用 AWS Fault Injection Service (AWS FIS),测试应用程序如何处理实例停止和启动。按教程创建实验模板,其通过 AWS FIS aws:ec2:stop-instances 操作逐个停止实例。

先决条件

要完成本教程,请确保您已做好以下准备:

  • 在账户中启动两个 EC2 测试实例。然后,记下两个实例的 ID。

  • 创建 IAM 角色,以便 AWS FIS 服务代表您执行 aws:ec2:stop-instances 操作。有关更多信息,请参见 适用于 AWS FIS 实验的 IAM 角色

  • 确保您有权访问 AWS FIS。有关更多信息,请参阅 AWS FIS 策略示例

步骤 1:创建实验模板

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

创建实验模板
  1. 您可以访问 https://console.aws.amazon.com/fis/,打开 AWS FIS 控制台。

  2. 在导航窗格中,选择实验模板

  3. 选择创建实验模板

  4. 对于描述和名称,输入模板的描述和名称。

  5. 对于操作,请执行以下操作:

    1. 选择添加操作

    2. 输入操作名称。例如,输入 stopOneInstance

    3. 对于操作类型,选择 aws:ec2:stop-instances

    4. 对于目标,保留 AWS FIS 为您创建的目标。

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

    6. 选择保存

  6. 对于目标,请执行以下操作:

    1. 对于 AWS FIS 在上一步中自动创建的目标,选择编辑

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

    3. 验证资源类型是否为 aws:ec2:instance

    4. 对于目标方法,选择资源 ID,然后选择两个测试实例的 ID。

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

    6. 选择保存

  7. 选择添加目标,然后执行以下操作:

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

    2. 对于资源类型,选择 aws:ec2:instance

    3. 对于目标方法,选择资源 ID,然后选择两个测试实例的 ID。

    4. 对于选择模式,选择全部

    5. 选择保存

  8. 通过操作部分,选择添加操作。执行以下操作:

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

    2. 对于操作类型,选择 aws:ec2:stop-instances

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

    4. 对于目标,选择您添加的第二个目标 (bothInstances)。

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

    6. 选择保存

  9. 对于服务访问权限,选择使用现有 IAM 角色,然后选择您按照本教程先决条件中所述创建的 IAM 角色。如未显示此角色,请验证其是否具有必要的信任关系。有关更多信息,请参见 适用于 AWS FIS 实验的 IAM 角色

  10. (可选)对于标签,选择添加新标签,然后指定标签键和标签值。您添加的标签将应用于实验模板,而不是应用于使用此模板运行的实验。

  11. 选择创建实验模板。当系统提示您确认时,输入 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:开始实验

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

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

  2. 请选择开始实验

  3. (可选)要为实验添加标签,请选择添加新标签,然后输入标签键和标签值。

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

步骤 3:跟踪实验进度

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

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

  2. 要查看实验状态,请在详细信息窗格中选择状态。有关更多信息,请参阅实验状态

  3. 当实验状态为正在运行时,转到下一步。

步骤 4:验证实验结果

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

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

  2. 在导航窗格中,选择 实例

  3. 当第一项操作的状态从待处理更改为正在运行(AWS FIS 控制台)时,则其中一个目标实例的状态将从正在运行更改为已停止(Amazon EC2 控制台)。

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

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

步骤 5:清除

如果不再需要为本教程创建的 EC2 测试实例,可以将其删除。

终止实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances (实例)

  3. 选择两个测试实例,然后依次选择 Instance state(实例状态)、Terminate instance(终止实例)。

  4. 当系统提示您确认时,选择终止

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

使用 AWS FIS 控制台删除实验模板
  1. 您可以访问 https://console.aws.amazon.com/fis/,打开 AWS FIS 控制台。

  2. 在导航窗格中,选择实验模板

  3. 选择实验模板,然后依次选择操作删除实验模板

  4. 当系统提示您确认时,输入 delete,然后选择删除实验模板