

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

# 金融情报 AWS 局的行动
<a name="action-sequence"></a>

要创建实验模板，必须定义一项或多项操作。有关 AWS FIS 提供的预定义操作列表，请参阅[操作参考](fis-actions-reference.md)。

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

**Topics**
+ [操作语法](#action-syntax)
+ [操作标识符](#action-identifiers)
+ [操作参数](#action-parameters)
+ [操作目标](#action-targets)
+ [操作持续时间](#action-duration)
+ [操作示例](#example-actions)

## 操作语法
<a name="action-syntax"></a>

以下是操作的语法。

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

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

***action\$1name***  
操作名称。

**actionId**  
[操作标识符](#action-identifiers)。

**description**  
可选的描述。

**parameters**  
任何[操作参数](#action-parameters)。

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

**targets**  
任何[操作目标](#action-targets)。

有关示例，请参阅 [操作示例](#example-actions)。

## 操作标识符
<a name="action-identifiers"></a>

每个 AWS FIS 操作都有一个标识符，其格式如下：

```
aws:service-name:action-type
```

例如，以下操作停止运行 Amazon EC2 目标实例：

```
aws:ec2:stop-instances
```

有关操作的完整列表，请参阅 [AWS FIS 操作参考](fis-actions-reference.md)。

## 操作参数
<a name="action-parameters"></a>

某些 AWS FIS 操作具有特定于该操作的其他参数。这些参数用于在操作运行时 AWS 向 FIS 传递信息。

AWS FIS 支持使用操作自定义故障类型，该`aws:ssm:send-command`操作使用 SSM 代理和 SSM 命令文档在目标实例上创建故障条件。`aws:ssm:send-command` 操作包含 `documentArn` 参数，将 SSM 文档的 Amazon 资源名称 (ARN) 作为值。当为实验模板添加操作时，您可以指定参数值。

有关为 `aws:ssm:send-command` 操作指定参数的更多信息，请参阅 [执行 aws:ssm:send-command 操作。](actions-ssm-agent.md#specifying-ssm-actions)。

您可以尽可能向操作参数输入回滚配置（也称为*后置操作*）。后置操作可将目标返回到操作运行之前的状态。此操作会在操作持续时间的指定时段后运行。并非所有操作都支持后置操作。例如，您无法恢复由操作终止的 Amazon EC2 实例。

## 操作目标
<a name="action-targets"></a>

运行在您指定的目标资源上的操作。定义目标后，您可以在定义操作时指定其名称。

```
"targets": {
    "ResourceType": "resource_name"
}
```

AWS FIS 操作支持以下操作目标的资源类型：
+ **AutoScalingGroups**— 亚马逊 EC2 Auto Scaling 群组
+ **存储桶**：Amazon S3 存储桶
+ **集群**：Amazon EKS 集群
+ **集群** — 亚马逊 ECS、Aurora DSQL 或亚马逊 Aurora 数据库集群
+ **DBInstances**— 亚马逊 RDS 数据库实例
+ **函数**- AWS Lambda 函数
+ **实例**：Amazon EC2 实例
+ **KinesisStreams**— Kinesis 数据流
+ **ManagedResources**— 启用 ARC 区域转移的 Amazon EKS 集群、亚马逊 EC2 应用程序和网络负载均衡器以及启用 ARC 区域转移的 Amazon EC2 Auto Scaling 组。
+ **MultiRegionClusters**— Amazon MemoryDB 多区域集群
+ **节点组**：Amazon EKS 节点组
+ **容器组（pod）**：Amazon EKS 上的 Kubernetes 容器组（pod）
+ **ReplicationGroups**— ElastiCache 复制组
+ **角色**：IAM 角色
+ **SpotInstances**— 亚马逊 EC2 竞价型实例
+ **子网**：VPC 子网
+ **表** — Amazon DynamoDB 多区域全局表强且最终保持一致
+ **任务**：Amazon ECS 任务
+ **TransitGateways**— 公交网关
+ **VirtualInterfaces**— Direct Connect 虚拟接口
+ **卷**：Amazon EBS 卷
+ **VPCEndpoints**— 亚马逊 VPC 终端节点

有关示例，请参阅 [操作示例](#example-actions)。

## 操作持续时间
<a name="action-duration"></a>

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

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

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

## 操作示例
<a name="example-actions"></a>

操作示例如下所示。

**示例**
+ [停止 EC2 实例](#example-action-stop-instances)
+ [中断竞价型实例](#example-action-send-spot-instance-interupptions)
+ [中断网络流量](#example-action-disrupt-connectivity)
+ [终止 EKS Worker](#example-action-terminate-nodegroup-instances)
+ [启动 ARC 区域自动换档](#example-start-arc-zonal-autoshift)<a name="example-action-stop-instances"></a>

**示例：停止 EC2 实例**  
以下操作将停止使用名为的目标识别的 EC2 实例*targetInstances*。两分钟后重启目标实例。

```
"actions": {
    "stopInstances": {
        "actionId": "aws:ec2:stop-instances",
        "parameters": {
            "startInstancesAfterDuration": "PT2M"
        },
        "targets": {
            "Instances": "targetInstances"
        }
    }
}
```<a name="example-action-send-spot-instance-interupptions"></a>

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

```
"actions": {
    "interruptSpotInstances": {
        "actionId": "aws:ec2:send-spot-instance-interruptions",
        "parameters": {
            "durationBeforeInterruption": "PT2M"
        },
        "targets": {
            "SpotInstances": "targetSpotInstances"
        }
    }
}
```<a name="example-action-disrupt-connectivity"></a>

**示例：中断网络流量**  
以下操作将拒绝目标子网与其他可用区子网之间的流量。

```
"actions": {
    "disruptAZConnectivity": {
        "actionId": "aws:network:disrupt-connectivity",
        "parameters": {
            "scope": "availability-zone",
            "duration": "PT5M"
        },
        "targets": {
            "Subnets": "targetSubnets"
        }
    }
}
```<a name="example-action-terminate-nodegroup-instances"></a>

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

```
"actions": {
    "terminateWorkers": {
        "actionId": "aws:eks:terminate-nodegroup-instances",
        "parameters": {
            "instanceTerminationPercentage": "50"
        },
        "targets": {
            "Nodegroups": "targetNodeGroups"
        }
    }
}
```<a name="example-start-arc-zonal-autoshift"></a>

**示例：启动 ARC 区域自动换档**  
以下操作将启动 ARC 区域自动移动，将托管资源从for转移出*az-in-parameters*去。*duration-in-parameteres*在 FI `ManagedResources` S 实验模板中，资源类型用作目标名称 AWS 的密钥。

```
{
    "description": "aaa",
    "targets": {
        "ManagedResources-Target-1": {
            "resourceType": "aws:arc:zonal-shift-managed-resource",
            "resourceArns": [
                "arn:aws:elasticloadbalancing:us-east-1:0124567890:loadbalancer/app/application/11223312312516",
            ],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "arc": {
            "actionId": "aws:arc:start-zonal-autoshift",
            "parameters": {
                "availabilityZoneIdentifier": "us-east-1a",
                "duration": "PT1M"
            },
            "targets": {
               "ManagedResources": "ManagedResources-Target-1"
            }
        }
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "roleArn": "arn:aws:iam::718579638765:role/fis",
    "tags": {},
    "experimentOptions": {
        "accountTargeting": "single-account",
        "emptyTargetResolutionMode": "fail"
    }
}
```