

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

# 管理 AWS FIS 實驗範本
<a name="manage-experiment-template"></a>

您可以使用 AWS FIS 主控台或命令列來建立和管理實驗範本。實驗範本包含一或多個在實驗期間於指定目標上執行的動作。它還包含阻止實驗超出界限的停止條件。如需實驗範本元件的詳細資訊，請參閱 [實驗範本元件](experiment-templates.md)。建立實驗範本之後，您可以使用它來執行實驗。

**Topics**
+ [建立實驗範本](create-template.md)
+ [檢視實驗範本](view-template.md)
+ [從實驗範本產生目標預覽](generate-target-preview.md)
+ [從範本開始實驗](start-experiment-from-template.md)
+ [更新實驗範本](update-template.md)
+ [標記實驗範本](tag-experiment-template.md)
+ [刪除實驗範本](delete-template.md)
+ [AWS FIS 實驗範本範例](experiment-template-example.md)

# 建立實驗範本
<a name="create-template"></a>

開始之前，請先完成以下任務：
+ [規劃您的實驗](getting-started-planning.md)。
+ 建立 IAM 角色，授予 AWS FIS 服務代表您執行動作的許可。如需詳細資訊，請參閱[AWS FIS 實驗的 IAM 角色](getting-started-iam-service-role.md)。
+ 確定您能夠存取 AWS FIS。如需詳細資訊，請參閱 [AWS FIS 政策範例](security_iam_id-based-policy-examples.md)。

**使用主控台建立實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選擇**建立實驗範本**。

1. 針對**步驟 1，指定範本詳細資訊**，執行下列動作：

   1. 針對**描述和名稱**，輸入範本的描述，例如 `Amazon S3 Network Disrupt Connectivity`。

   1. （選用） 針對**帳戶目標**，選擇**多個帳戶**以設定多帳戶實驗範本。

   1. 選擇**下一步**，然後移至**步驟 2，指定動作和目標**。

1. 針對**動作**，指定範本的一組動作。針對每個動作，選擇**新增動作**並完成下列動作：
   + 在**名稱**中，輸入動作的名稱。

     允許的字元為英數字元、連字號 (-) 和底線 (\$1)。名稱必須以字母開頭。不可使用空格。在此範本中，每個動作名稱都必須是唯一的。
   + （選用） 針對**描述**，輸入動作的描述。長度上限為 512 個字元。
   + （選用） 對於**開始之後**，選取此範本中定義的另一個動作，必須在目前動作開始之前完成。否則，動作會在實驗開始時執行。
   + 針對**動作類型**，選擇 AWS FIS 動作。
   + 針對**目標**，選擇您在目標區段中定義的**目標**。如果您尚未定義此動作的目標， AWS FIS 會為您建立新的目標。
   + 針對**動作參數**，指定動作的參數。只有在 AWS FIS 動作具有參數時，才會顯示本節。
   + 選擇**儲存**。

1. 針對**目標**，定義要在其中執行動作的目標資源。您必須指定至少一個資源 ID 或一個資源標籤做為目標。選擇**編輯**以編輯 AWS FIS 在上一個步驟中為您建立的目標，或選擇**新增目標**。針對每個目標，執行下列動作：
   + 在**名稱**中，輸入目標的名稱。

     允許的字元為英數字元、連字號 (-) 和底線 (\$1)。名稱必須以字母開頭。不可使用空格。每個目標名稱在此範本中必須是唯一的。
   + 針對**資源類型**，選擇 動作支援的資源類型。
   + 針對**目標方法**，執行下列其中一項：
     + 選擇**資源 IDs**，然後選擇或新增資源 IDs。
     + 選擇**資源標籤、篩選條件和參數**，然後新增您需要的標籤和篩選條件。如需詳細資訊，請參閱[識別目標資源](targets.md#target-identification)。
   + 對於**選取模式**，選擇**計數**以對指定數量的已識別目標執行動作，或選擇**百分比**以對指定百分比的已識別目標執行動作。根據預設， 動作會在所有已識別的目標上執行。
   + 選擇**儲存**。

1. 若要使用您建立的目標更新動作，請在**動作**下尋找動作，選擇**編輯**，然後更新**目標**。您可以針對多個動作使用相同的目標。

1. （選用） 對於**實驗選項**，選取空白目標解析模式的行為。

1. 選擇**下一步**以移至**步驟 3，設定服務存取**。

1. 針對**服務存取**，選擇**使用現有的 IAM 角色**，然後選擇您建立的 IAM 角色，如本教學課程的先決條件所述。如果您的角色未顯示，請確認其具有所需的信任關係。如需詳細資訊，請參閱[AWS FIS 實驗的 IAM 角色](getting-started-iam-service-role.md)。

1. （僅限多帳戶實驗） 對於**目標帳戶組態**，為每個目標帳戶新增角色 ARN 和選用描述。若要使用 CSV 檔案上傳目標帳戶角色 ARNs，請選擇**上傳所有目標帳戶的角色 ARNs**，然後選擇**選擇 .CSV 檔案**

1. 選擇**下一步**以移至**步驟 4，設定選用設定**。

1. （選用） 針對**停止條件**，選取停止條件的 Amazon CloudWatch 警示。如需詳細資訊，請參閱[AWS FIS 的停止條件](stop-conditions.md)。

1. （選用） 對於**日誌**，設定目的地選項。若要將日誌傳送至 S3 儲存貯體，請選擇**傳送至 Amazon S3 儲存貯體**，然後輸入儲存貯體名稱和字首。若要將日誌傳送至 CloudWatch Logs，請選擇**傳送至 CloudWatch Logs**，然後輸入日誌群組。

1. （選用） 針對**標籤**，選擇**新增標籤**並指定標籤索引鍵和標籤值。您新增的標籤會套用至實驗範本，而不是使用範本執行的實驗。

1. 選擇**下一步**以移至**步驟 5，檢閱並建立**。

1. 檢閱範本，然後選擇**建立實驗範本**。出現確認提示時，輸入 `create`，然後選擇**建立實驗範本**。

**使用 CLI 建立實驗範本**  
使用 [create-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/create-experiment-template.html) 命令。

您可以從 JSON 檔案載入實驗範本。

使用 `--cli-input-json` 參數。

```
aws fis create-experiment-template --cli-input-json fileb://<path-to-json-file>
```

如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[產生 CLI 骨架範本](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)。如需範本範例，請參閱 [AWS FIS 實驗範本範例](experiment-template-example.md)。

# 檢視實驗範本
<a name="view-template"></a>

您可以檢視您建立的實驗範本。

**使用主控台檢視實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 若要檢視特定範本的相關資訊，請選取**實驗範本 ID**。

1. 在**詳細資訊**區段中，您可以檢視範本的描述和停止條件。

1. 若要檢視實驗範本的動作，請選擇**動作**。

1. 若要檢視實驗範本的目標，請選擇**目標**。

1. 若要檢視實驗範本的標籤，請選擇**標籤**。

**使用 CLI 檢視實驗範本**  
使用 [list-experiment-templates](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/list-experiment-templates.html) 命令取得實驗範本清單，並使用 [get-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/get-experiment-template.html) 命令取得特定實驗範本的相關資訊。

# 從實驗範本產生目標預覽
<a name="generate-target-preview"></a>

 開始實驗之前，您可以產生目標預覽，以確認您的實驗範本已設定為以預期資源為目標。當您開始實際實驗時，目標資源可能與預覽版中的資源不同，因為資源可能會隨機移除、更新或取樣。當您產生目標預覽時，您會啟動會略過所有動作的實驗。

**注意**  
產生目標預覽不允許您驗證您是否具有對資源採取動作的必要許可。

**使用主控台啟動目標預覽**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 若要檢視實驗範本的目標，請選擇**目標**。

1. 若要驗證實驗範本的目標資源，請選擇**產生預覽**。當您執行實驗時，此目標預覽會自動更新為來自最近實驗的目標。

**使用 CLI 啟動目標預覽**
+ 執行下列 [start-experiment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/start-experiment.html) 命令。以您自己的值取代斜體值。

  ```
  aws fis start-experiment \
      --experiment-options actionsMode=skip-all \
      --experiment-template-id EXTxxxxxxxxx
  ```

# 從範本開始實驗
<a name="start-experiment-from-template"></a>

建立實驗範本之後，您可以使用該範本開始實驗。

當您開始實驗時，我們會建立指定範本的快照，並使用該快照來執行實驗。因此，如果實驗範本在實驗執行時更新或刪除，這些變更不會影響執行中的實驗。

當您開始實驗時， AWS FIS 會代表您建立服務連結角色。如需詳細資訊，請參閱[使用 Fault Injection Service AWS 的服務連結角色](using-service-linked-roles.md)。

開始實驗後，您可以隨時停止它。如需詳細資訊，請參閱[停止實驗](stop-experiment.md)。

**使用主控台開始實驗**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選取實驗範本，然後選擇**開始實驗**。

1. （選用） 若要將標籤新增至實驗，請選擇**新增標籤**，然後輸入標籤索引鍵和標籤值。

1. 選擇 **Start experiment** (開始實驗)。出現確認提示時，輸入 **start** 並選擇**開始實驗**。

**使用 CLI 開始實驗**  
使用 [start-experiment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/start-experiment.html) 命令。

# 更新實驗範本
<a name="update-template"></a>

您可以更新現有的實驗範本。當您更新實驗範本時，變更不會影響任何使用該範本的執行中實驗。

**使用主控台更新實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選取實驗範本，然後選擇**動作**、**更新實驗範本**。

1. 視需要修改範本詳細資訊，然後選擇**更新實驗範本**。

**使用 CLI 更新實驗範本**  
使用 [update-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/update-experiment-template.html) 命令。

# 標記實驗範本
<a name="tag-experiment-template"></a>

您可以將自己的標籤套用至實驗範本，以協助您整理範本。您也可以實作[標籤型 IAM 政策](security_iam_service-with-iam.md#security_iam_service-with-iam-tags)，以控制對實驗範本的存取。

**使用主控台標記實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選取實驗範本，然後選擇**動作**、**管理標籤**。

1. 若要新增標籤，請選擇**新增標籤**，然後指定索引鍵和值。

   若要移除標籤，請為標籤選擇**移除**。

1. 選擇**儲存**。

**使用 CLI 標記實驗範本**  
使用 [tag-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/tag-resource.html) 命令。

# 刪除實驗範本
<a name="delete-template"></a>

如果您不再需要實驗範本，可以將其刪除。當您刪除實驗範本時，任何使用該範本的執行中實驗都不會受到影響。實驗會繼續執行，直到完成或停止為止。不過，刪除的實驗範本無法從 主控台的**實驗**頁面檢視。

**使用主控台刪除實驗範本**

1. 在 https：//[https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) 開啟 AWS FIS 主控台。

1. 在導覽窗格中，選擇**實驗範本**。

1. 選取實驗範本，然後選擇**動作**、**刪除實驗範本**。

1. 出現確認提示時，輸入 **delete** 並選擇**刪除實驗範本**。

**使用 CLI 刪除實驗範本**  
使用 [delete-experiment-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/delete-experiment-template.html) 命令。

# AWS FIS 實驗範本範例
<a name="experiment-template-example"></a>

如果您使用 AWS FIS API 或命令列工具來建立實驗範本，您可以在 JavaScript 物件標記法 (JSON) 中建構範本。如需實驗範本元件的詳細資訊，請參閱 [AWS FIS 實驗範本元件](experiment-templates.md)。

若要使用其中一個範例範本建立實驗，請將其儲存至 JSON 檔案 （例如 `my-template.json`)，以您自己的值取代*斜體*的預留位置值，然後執行下列 [create-experiment-template](https://docs.aws.amazon.com/cli/latest/reference/fis/create-experiment-template.html) 命令。

```
aws fis create-experiment-template --cli-input-json file://my-template.json
```

**Topics**
+ [根據篩選條件停止 EC2 執行個體](#stop-instances-filters)
+ [停止指定數量的 EC2 執行個體](#stop-instances-count)
+ [執行預先設定的 AWS FIS SSM 文件](#cpu-fault-injection)
+ [執行預先定義的 Automation Runbook](#run-automation-runbook)
+ [具有目標 IAM 角色的 EC2 執行個體上的調節 API 動作](#inject-api-throttle)
+ [Kubernetes 叢集中 Pod 的壓力測試 CPU](#stress-test)
+ [指定 Kinesis Data Streams 數量的佈建輸送量例外狀況](#throughput-kinesis)
+ [實驗角色許可範例](#permissions-example)

## 根據篩選條件停止 EC2 執行個體
<a name="stop-instances-filters"></a>

下列範例會停止指定區域中所有執行中的 Amazon EC2 執行個體，並在指定的 VPC 中具有指定的標籤。它會在兩分鐘後重新啟動它們。

```
{
    "tags": {
        "Name": "StopEC2InstancesWithFilters"
    },
    "description": "Stop and restart all instances in us-east-1b with the tag env=prod in the specified VPC",
    "targets": {
        "myInstances": {
            "resourceType": "aws:ec2:instance",
            "resourceTags": {
                "env": "prod"
            },
            "filters": [
                {
                    "path": "Placement.AvailabilityZone",
                    "values": ["us-east-1b"]
                },
                {
                    "path": "State.Name",
                    "values": ["running"]
                },
                {
                    "path": "VpcId",
                    "values": [ "vpc-aabbcc11223344556"]
                }
            ],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "StopInstances": {
            "actionId": "aws:ec2:stop-instances",
            "description": "stop the instances",
            "parameters": {
                "startInstancesAfterDuration": "PT2M"
            },
            "targets": {
                "Instances": "myInstances"
            }
        }
    },
    "stopConditions": [
        {
            "source": "aws:cloudwatch:alarm",
            "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name"
        }
    ],
    "roleArn": "arn:aws:iam::111122223333:role/role-name"
}
```

## 停止指定數量的 EC2 執行個體
<a name="stop-instances-count"></a>

下列範例會停止具有指定標籤的三個執行個體。 AWS FIS 會選取要隨機停止的特定執行個體。它會在兩分鐘後重新啟動這些執行個體。

```
{
    "tags": {
        "Name": "StopEC2InstancesByCount"
    },
    "description": "Stop and restart three instances with the specified tag",
    "targets": {
        "myInstances": {
            "resourceType": "aws:ec2:instance",
            "resourceTags": {
                "env": "prod"
            },
            "selectionMode": "COUNT(3)"
        }
    },
    "actions": {
        "StopInstances": {
            "actionId": "aws:ec2:stop-instances",
            "description": "stop the instances",
            "parameters": {
                "startInstancesAfterDuration": "PT2M"
            },
            "targets": {
                "Instances": "myInstances"
            }
        }
    },
    "stopConditions": [
        {
            "source": "aws:cloudwatch:alarm",
            "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name"
        }
    ],
    "roleArn": "arn:aws:iam::111122223333:role/role-name"
}
```

## 執行預先設定的 AWS FIS SSM 文件
<a name="cpu-fault-injection"></a>

下列範例使用預先設定的 AWS FIS SSM 文件，在指定的 EC2 執行個體上執行 CPU 故障注入 60 秒，[AWSFIS-Run-CPU-Stress](actions-ssm-agent.md#awsfis-run-cpu-stress). AWS FIS 會監控實驗 2 分鐘。

```
{
    "tags": {
        "Name": "CPUStress"
    },
    "description": "Run a CPU fault injection on the specified instance",
    "targets": {
        "myInstance": {
            "resourceType": "aws:ec2:instance",
            "resourceArns": ["arn:aws:ec2:us-east-1:111122223333:instance/instance-id"],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "CPUStress": {
            "actionId": "aws:ssm:send-command",
            "description": "run cpu stress using ssm",
            "parameters": {
                "duration": "PT2M",
                "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-CPU-Stress",
                "documentParameters": "{\"DurationSeconds\": \"60\", \"InstallDependencies\": \"True\", \"CPU\": \"0\"}"
            },
            "targets": {
                "Instances": "myInstance"
            }
        }
    },
    "stopConditions": [
        {
            "source": "aws:cloudwatch:alarm",
            "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name"
        }
    ],
    "roleArn": "arn:aws:iam::111122223333:role/role-name"
}
```

## 執行預先定義的 Automation Runbook
<a name="run-automation-runbook"></a>

下列範例會使用 Systems Manager、AWS-PublishSNSNotification 提供的 Runbook 將通知發佈至 Amazon SNS。 [PublishSNSNotification](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-publishsnsnotification.html) 角色必須具有將通知發佈至指定 SNS 主題的許可。

```
{
    "description": "Publish event through SNS",
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "targets": {
    },
    "actions": {
        "sendToSns": {
            "actionId": "aws:ssm:start-automation-execution",
            "description": "Publish message to SNS",
            "parameters": {
                "documentArn": "arn:aws:ssm:us-east-1::document/AWS-PublishSNSNotification",
                "documentParameters": "{\"Message\": \"Hello, world\", \"TopicArn\": \"arn:aws:sns:us-east-1:111122223333:topic-name\"}",
                "maxDuration": "PT1M"
            },
            "targets": {
            }
        }
    },
    "roleArn": "arn:aws:iam::111122223333:role/role-name"
}
```

## 具有目標 IAM 角色的 EC2 執行個體上的調節 API 動作
<a name="inject-api-throttle"></a>

下列範例會針對目標定義中指定的 IAM 角色 (IAM) 發出的 API 呼叫，調節 動作定義中指定的 100% API 呼叫。

**注意**  
如果您想要以屬於 Auto Scaling 群組的 EC2 執行個體為目標，請改用 **aws：ec2：asg-insufficient-instance-capacity-error** 動作，並以 Auto Scaling 群組為目標。如需詳細資訊，請參閱[aws:ec2:asg-insufficient-instance-capacity-error](fis-actions-reference.md#asg-ice)。

```
{
    "tags": {
        "Name": "ThrottleEC2APIActions"
    },
    "description": "Throttle the specified EC2 API actions on the specified IAM role",
    "targets": {
        "myRole": {
            "resourceType": "aws:iam:role",
            "resourceArns": ["arn:aws:iam::111122223333:role/role-name"],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "ThrottleAPI": {
            "actionId": "aws:fis:inject-api-throttle-error",
            "description": "Throttle APIs for 5 minutes",
            "parameters": {
                "service": "ec2",
                "operations": "DescribeInstances,DescribeVolumes",
                "percentage": "100",
                "duration": "PT2M"
            },
            "targets": {
                "Roles": "myRole"
            }
        }
    },
    "stopConditions": [
        {
            "source": "aws:cloudwatch:alarm",
            "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name"
        }
    ],
    "roleArn": "arn:aws:iam::111122223333:role/role-name"
}
```

## Kubernetes 叢集中 Pod 的壓力測試 CPU
<a name="stress-test"></a>

下列範例使用 Chaos Mesh 對 Amazon EKS Kubernetes 叢集中的 Pod CPU 進行壓力測試一分鐘。

```
{
    "description": "ChaosMesh StressChaos example",
    "targets": {
        "Cluster-Target-1": {
            "resourceType": "aws:eks:cluster",
            "resourceArns": [
                "arn:aws:eks:arn:aws::111122223333:cluster/cluster-id"
            ],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "TestCPUStress": {
            "actionId": "aws:eks:inject-kubernetes-custom-resource",
            "parameters": {
                "maxDuration": "PT2M",
                "kubernetesApiVersion": "chaos-mesh.org/v1alpha1",
                "kubernetesKind": "StressChaos",
                "kubernetesNamespace": "default",
                "kubernetesSpec": "{\"selector\":{\"namespaces\":[\"default\"],\"labelSelectors\":{\"run\":\"nginx\"}},\"mode\":\"all\",\"stressors\": {\"cpu\":{\"workers\":1,\"load\":50}},\"duration\":\"1m\"}"
            },
            "targets": {
                "Cluster": "Cluster-Target-1"
            }
        }
    },
    "stopConditions": [{
        "source": "none"
    }],
    "roleArn": "arn:aws:iam::111122223333:role/role-name",
    "tags": {}
}
```

下列範例使用 Litmus 對 Amazon EKS Kubernetes 叢集中的 Pod CPU 進行壓力測試一分鐘。

```
{
    "description": "Litmus CPU Hog",
    "targets": {
        "MyCluster": {
            "resourceType": "aws:eks:cluster",
            "resourceArns": [
                "arn:aws:eks:arn:aws::111122223333:cluster/cluster-id"
            ],
            "selectionMode": "ALL"
        }
    },
    "actions": {
        "MyAction": {
            "actionId": "aws:eks:inject-kubernetes-custom-resource",
            "parameters": {
                "maxDuration": "PT2M",
                "kubernetesApiVersion": "litmuschaos.io/v1alpha1",
                "kubernetesKind": "ChaosEngine",
                "kubernetesNamespace": "litmus",
                "kubernetesSpec": "{\"engineState\":\"active\",\"appinfo\":{\"appns\":\"default\",\"applabel\":\"run=nginx\",\"appkind\":\"deployment\"},\"chaosServiceAccount\":\"litmus-admin\",\"experiments\":[{\"name\":\"pod-cpu-hog\",\"spec\":{\"components\":{\"env\":[{\"name\":\"TOTAL_CHAOS_DURATION\",\"value\":\"60\"},{\"name\":\"CPU_CORES\",\"value\":\"1\"},{\"name\":\"PODS_AFFECTED_PERC\",\"value\":\"100\"},{\"name\":\"CONTAINER_RUNTIME\",\"value\":\"docker\"},{\"name\":\"SOCKET_PATH\",\"value\":\"/var/run/docker.sock\"}]},\"probe\":[]}}],\"annotationCheck\":\"false\"}"
            },
            "targets": {
                "Cluster": "MyCluster"
            }
        }
    },
    "stopConditions": [{
        "source": "none"
    }],
    "roleArn": "arn:aws:iam::111122223333:role/role-name",
    "tags": {}
}
```

## 指定 Kinesis Data Streams 數量的佈建輸送量例外狀況
<a name="throughput-kinesis"></a>

下列範例會針對 100% 具有指定標籤的最多五個 Kinesis Data Streams 請求擲出佈建輸送量例外狀況。 AWS FIS 會隨機選取要影響的串流。5 分鐘後會移除故障。

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

## 實驗角色許可範例
<a name="permissions-example"></a>

下列許可可讓您對影響 50% 請求的特定串流執行 `aws:kinesis:stream-provisioned-throughput-exception`和 `aws:kinesis:stream-expired-iterator-exception`動作。

```
{
    "Version": "2012-10-17",		 	 	 
     "Statement": [
        {
            "Effect": "Allow",
            "Action": "kinesis:InjectApiError",
            "Resource": "*"
            "Condition": {
                "ForAllValues:StringEquals": {
                    "kinesis:FisActionId": [
                        "aws:kinesis:stream-provisioned-throughput-exception",
                        "aws:kinesis:stream-expired-iterator-exception" 
                    ],
                    "kinesis:FisTargetArns": [
                        "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name"
                    ],
                },
                "NumericEquals": {
                    "kinesis:FisInjectPercentage": "50"
                }
            }
        },
        {
             "Action": [
                   "kinesis:DescribeStreamSummary",
              ],
             "Resource": "*",
             "Effect": "Allow"
        }
    ]
}
```