

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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).
+ 사용자를 대신하여 작업을 수행할 수 있는 권한을 AWS FIS 서비스에 부여하는 IAM 역할을 생성합니다. 자세한 내용은 [AWS FIS 실험을 위한 IAM 역할](getting-started-iam-service-role.md) 단원을 참조하십시오.
+  AWS FIS에 액세스할 수 있는지 확인합니다. 자세한 내용을 알아보려면 [AWS FIS 정책 예제](security_iam_id-based-policy-examples.md)를 참조하세요.

**콘솔을 사용하여 실험 템플릿을 생성하려면**

1. [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)입니다. 이름은 문자로 시작해야 합니다. 공백은 사용할 수 없습니다. 각 대상 이름은 이 템플릿에서 고유해야 합니다.
   + **리소스 유형**에서는 작업에 지원되는 리소스 유형을 선택합니다.
   + **대상 메서드**에서 다음 중 하나를 수행합니다.
     + **리소스 ID**를 선택한 다음 리소스 ID를 선택하거나 추가합니다.
     + **리소스 태그, 필터, 파라미터**를 선택한 다음 필요한 태그와 필터를 추가합니다. 자세한 내용은 [대상 리소스 식별](targets.md#target-identification) 단원을 참조하십시오.
   + **선택 모드**에서는 **개수**를 선택하여 지정된 수의 식별된 대상에 대해 작업을 실행하거나 **백분율**을 선택하여 지정된 비율의 식별된 대상에 대해 작업을 실행합니다. 기본적으로 작업은 식별된 모든 대상에서 실행됩니다.
   + **저장**을 선택합니다.

1. 생성한 대상으로 작업을 업데이트하려면 **작업** 아래에서 작업을 찾아 **편집**을 선택한 다음 **대상**을 업데이트하세요. 실험 템플릿에서 동일한 대상을 여러 작업에 사용할 수 있습니다.

1. (선택 사항) **실험 옵션**에서 빈 대상 해상도 모드의 동작을 선택합니다.

1. **다음을** 선택하여 **3단계, 서비스 액세스 구성**으로 이동합니다.

1. **서비스 액세스**의 경우 **기존 IAM 역할 사용**을 선택한 다음 이 자습서의 사전 조건에 설명된 대로 생성한 IAM 역할을 선택합니다. 역할이 표시되지 않는 경우 해당 역할에 필요한 신뢰 관계가 있는지 확인하세요. 자세한 내용은 [AWS FIS 실험을 위한 IAM 역할](getting-started-iam-service-role.md) 단원을 참조하십시오.

1. (다중 계정 실험만 해당) **대상 계정 구성의** 경우 각 대상 계정에 대해 역할 ARN과 선택적 설명을 추가합니다. 대상 계정 역할 ARN을 CSV 파일로 업로드하려면 **모든 대상 계정에 대한 역할 ARN 업로드**를 선택한 다음 **.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://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://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가 사용자를 대신하여 서비스 연결 역할을 생성합니다. 자세한 내용은 [AWS Fault Injection Service에 서비스 연결 역할 사용](using-service-linked-roles.md) 단원을 참조하십시오.

실험을 시작한 후에는 언제든지 중지할 수 있습니다. 자세한 내용은 [실험 중지](stop-experiment.md) 단원을 참조하십시오.

**콘솔을 사용하여 실험을 시작하려면**

1. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/) AWS FIS 콘솔을 엽니다.

1. 탐색 창에서 **실험 템플릿**을 선택합니다.

1. 실험 템플릿을 선택하고 **실험 시작**을 선택합니다.

1. (선택 사항) 실험에 태그를 추가하려면 **새 태그 추가**를 선택하고 태그 키와 태그 값을 입력합니다.

1. **실험 시작**을 선택합니다. 확인 메시지가 나타나면 **start**을 입력하고 **실험 시작**을 선택합니다.

**CLI를 사용하여 실험을 시작하려면**  
[start-experiment](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/start-experiment.html) 명령을 사용합니다.

# 실험 템플릿 업데이트
<a name="update-template"></a>

기존 실험 템플릿을 업데이트할 수 있습니다. 실험 템플릿을 업데이트해도 해당 템플릿을 사용하는 실행 중인 실험에는 변경 내용이 영향을 주지 않습니다.

**콘솔을 사용하여 실험 템플릿을 업데이트하려면**

1. [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://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://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 Object Notation(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)
+ [사전 정의된 자동화 런북 실행](#run-automation-runbook)
+ [대상 IAM 역할을 사용하여 EC2 인스턴스에서의 API 작업을 제한하세요.](#inject-api-throttle)
+ [Kubernetes 클러스터 내 포드의 CPU 스트레스 테스트](#stress-test)
+ [지정된 수의 Kinesis Data Streams에 대한 프로비저닝된 처리량 예외](#throughput-kinesis)
+ [실험 역할 권한 예제](#permissions-example)

## 필터를 기반으로 EC2 인스턴스 중지
<a name="stop-instances-filters"></a>

다음 예제에서는 지정된 리전의 모든 실행 중인 VPC에서 지정된 태그를 가진 모든 Amazon EC2 인스턴스를 중지합니다. 2분 후에 인스턴스가 다시 시작됩니다.

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

다음 예시에서는 지정된 태그가 있는 인스턴스 3개를 중지합니다. AWS FIS는 임의로 중지할 특정 인스턴스를 선택합니다. 2분 후에 이러한 인스턴스를 다시 시작합니다.

```
{
    "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 인스턴스에서 60초 동안 CPU 오류 주입을 실행합니다. [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"
}
```

## 사전 정의된 자동화 런북 실행
<a name="run-automation-runbook"></a>

다음 예제는 Systems Manager에서 제공하는 런북인 [AWS-PublishSNSNotification](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-publishsnsnotification.html)을 사용하여 Amazon SNS에 알림을 게시합니다. 역할에는 지정된 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 역할에 의해 수행된 API 직접 호출에 대해 작업 정의에 지정된 API 호출의 100%를 스로틀링합니다.

**참고**  
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 클러스터 내 포드의 CPU 스트레스 테스트
<a name="stress-test"></a>

다음 예시에서는 Chaos Mesh를 사용하여 Amazon EKS Kubernetes 클러스터의 포드 CPU에 1분 동안 스트레스 테스트를 실시합니다.

```
{
    "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 클러스터의 포드 CPU에 1분 동안 스트레스 테스트를 실시합니다.

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

다음 예제에서는 지정된 태그가 있는 최대 5개의 Kinesis Data Streams 요청의 100%에 대해 프로비저닝된 처리량 예외가 발생합니다. 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"
        }
    ]
}
```