

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS FIS 的動作
<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 Agent 和 SSM 命令文件在目標執行個體上建立錯誤條件。`aws:ssm:send-command` 動作包含以 SSM 文件的 Amazon Resource Name (ARN) 做為值的`documentArn`參數。當您將 動作新增至實驗範本時，您可以指定參數的值。

如需指定 `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** – Amazon EC2 Auto Scaling 群組
+ **儲存貯體** – Amazon S3 儲存貯體
+ **叢集** – Amazon EKS 叢集
+ **叢集** – Amazon ECS、Aurora DSQL 或 Amazon Aurora 資料庫叢集
+ **DBInstances** – Amazon RDS 資料庫執行個體
+ **函數** – AWS Lambda 函數
+ **執行個體** – Amazon EC2 執行個體
+ **KinesisStreams** – Kinesis 資料串流
+ **ManagedResources** – 啟用 ARC 區域轉移的 Amazon EKS 叢集、Amazon EC2 Application and Network Load Balancer 和 Amazon EC2 Auto Scaling 群組。
+ **MultiRegionClusters** – Amazon MemoryDB 多區域叢集
+ **節點群組** – Amazon EKS 節點群組
+ **Pod：**Amazon EKS 上的 Kubernetes Pod
+ **ReplicationGroups** – ElastiCache 複寫群組
+ **角色** – IAM 角色
+ **SpotInstances** – Amazon EC2 Spot 執行個體
+ **子網路** – VPC 子網路
+ **資料表** – Amazon DynamoDB 多區域強式和最終一致全域資料表
+ **任務** – Amazon ECS 任務
+ **TransitGateways** – 傳輸閘道
+ **VirtualInterfaces** – Direct Connect 虛擬界面
+ **磁碟**區 – Amazon EBS 磁碟區
+ **VPCEndpoints** – Amazon VPC 端點

如需範例，請參閱 [動作範例](#example-actions)。

## 動作持續時間
<a name="action-duration"></a>

如果動作包含參數，您可以用來指定動作的持續時間，則根據預設，只有在指定的持續時間過後，才會將該動作視為完成。如果您已將`emptyTargetResolutionMode`實驗選項設定為 `skip`，則在未解析任何目標時，動作會立即完成，狀態為「略過」。例如，如果您指定 5 分鐘的持續時間， AWS FIS 會將動作視為在 5 分鐘後完成。然後，它會開始下一個動作，直到所有動作都完成為止。

持續時間可以是維持動作條件的時間長度，或監控指標的時間長度。例如，延遲會在指定的時間內注入。對於近乎即時的動作類型，例如終止執行個體，會在指定的時間內監控停止條件。

如果動作在動作參數中包含後置動作，則後置動作會在動作完成後執行。完成後置動作所需的時間可能會導致指定動作持續時間與下一個動作開始 （或實驗結束，如果所有其他動作都完成） 之間的延遲。

## 動作範例
<a name="example-actions"></a>

以下是範例動作。

**範例**
+ [停止 EC2 執行個體](#example-action-stop-instances)
+ [中斷 Spot 執行個體](#example-action-send-spot-instance-interupptions)
+ [中斷網路流量](#example-action-disrupt-connectivity)
+ [終止 EKS 工作者](#example-action-terminate-nodegroup-instances)
+ [啟動 ARC 區域自動轉移](#example-start-arc-zonal-autoshift)<a name="example-action-stop-instances"></a>

**範例：停止 EC2 執行個體**  
下列動作會停止使用名為 *targetInstances* 的目標所識別的 EC2 執行個體。兩分鐘後，它會重新啟動目標執行個體。

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

**範例：中斷 Spot 執行個體**  
下列動作會停止使用名為 *targetSpotInstances* 的目標所識別的 Spot 執行個體。它會等待兩分鐘，再中斷 Spot 執行個體。

```
"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 工作者**  
下列動作會在使用名為 *targetNodeGroups* 的目標所識別的 EKS 叢集中終止 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 區域自動轉移，將受管資源從參數*duration-in-parameteres**az-in-parameters* 轉移。資源類型`ManagedResources`會用作 AWS FIS 實驗範本中目標名稱的索引鍵。

```
{
    "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"
    }
}
```