AWS FIS 的行动集 - AWS 故障注入服务

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

AWS FIS 的行动集

要创建实验模板,则必须定义一项或多项操作以形成操作集。有关 AWS FIS 提供的预定义操作列表,请参阅操作

实验期间只能执行一次操作。要在同一个实验中多次运行同一 AWS FIS 操作,请使用不同的名称将其多次添加到模板中。

操作语法

操作集采用以下语法形式:

{ "actions": { "action_name": { "actionId": "aws:service:action-type", "description": "string", "parameters": { "name": "value" }, "startAfter": ["action_name", ...], "targets": { "resource_type": "target_name" } } } }

您需要为操作定义提供以下内容:

action_name

操作名称。

actionId

操作标识符

description

可选的描述。

parameters

任何操作参数

startAfter

执行操作前必须完成的所有操作。否则,在开始实验时执行此操作。

targets

任何操作目标

有关示例,请参阅操作示例

操作持续时间

如果操作包含可用于指定操作持续时间的参数,则默认情况下,只有等到此时段结束,才能视为操作已完成。如果您已将 emptyTargetResolutionMode 实验选项设置为 skip,则当未解析任何目标时,操作将立即完成,状态为“已跳过”。例如,如果您将持续时间指定为 5 分钟,则 AWS FIS 会认为操作在 5 分钟后完成。然后在此时段结束后开始下一项操作,直到完成所有操作。

持续时间可以是操作条件维持时长,也可以是指标监控时长。例如,在指定的持续时间内注入延迟。对于近乎瞬时的操作类型(如终止实例),将在指定持续时间内监控停止条件。

如果操作参数中包含后期操作,则将在操作完成后再执行后期操作。后期操作的用时可能会在指定操作的持续时间到下一项操作的开始时间之间造成延迟(如果其他操作均已完成,则改为到实验的结束时间)。

操作示例

示例操作如下所示。

示例:停止 EC2 实例

以下操作将停止运行通过 targetInstances 目标识别的 EC2 实例。两分钟后重启目标实例。

"actions": { "stopInstances": { "actionId": "aws:ec2:stop-instances", "parameters": { "startInstancesAfterDuration": "PT2M" }, "targets": { "Instances": "targetInstances" } } }
示例:中断竞价型实例

以下操作将停止使用名为的目标标识的竞价型实例targetSpotInstances。两分钟后再中断竞价型实例。

"actions": { "interruptSpotInstances": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "targetSpotInstances" } } }
示例:中断网络流量

以下操作将拒绝目标子网与其他可用区子网之间的流量。

"actions": { "disruptAZConnectivity": { "actionId": "aws:network:disrupt-connectivity", "parameters": { "scope": "availability-zone", "duration": "PT5M" }, "targets": { "Subnets": "targetSubnets" } } }
示例:终止 EKS Worker

以下操作将终止 EKS 集群中使用名targetNodeGroups为的目标标识的 50% 的 EC2 实例。

"actions": { "terminateWorkers": { "actionId": "aws:eks:terminate-nodegroup-instances", "parameters": { "instanceTerminationPercentage": "50" }, "targets": { "Nodegroups": "targetNodeGroups" } } }