

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Contoh AWS templat eksperimen FIS
<a name="experiment-template-example"></a>

Jika Anda menggunakan AWS FIS API atau alat baris perintah untuk membuat template eksperimen, Anda dapat membuat template di JavaScript Object Notation (JSON). Untuk informasi selengkapnya tentang komponen templat eksperimen, lihat[AWS Komponen template eksperimen FIS](experiment-templates.md).

Untuk membuat eksperimen menggunakan salah satu contoh templat, simpan ke file JSON (misalnya,`my-template.json`), ganti nilai placeholder *italics* dengan nilai Anda sendiri, lalu jalankan perintah berikut. [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**
+ [Hentikan EC2 instance berdasarkan filter](#stop-instances-filters)
+ [Hentikan sejumlah EC2 instans tertentu](#stop-instances-count)
+ [Jalankan dokumen SSM AWS FIS yang telah dikonfigurasi sebelumnya](#cpu-fault-injection)
+ [Jalankan runbook Otomasi yang telah ditentukan](#run-automation-runbook)
+ [Tindakan Throttle API pada EC2 instance dengan peran IAM target](#inject-api-throttle)
+ [Uji stres CPU pod di klaster Kubernetes](#stress-test)
+ [Pengecualian throughput yang disediakan untuk jumlah tertentu dari Kinesis Data Streams](#throughput-kinesis)
+ [Contoh izin peran percobaan](#permissions-example)

## Hentikan EC2 instance berdasarkan filter
<a name="stop-instances-filters"></a>

Contoh berikut menghentikan semua EC2 instance Amazon yang berjalan di Wilayah tertentu dengan tag yang ditentukan di VPC yang ditentukan. Ini restart mereka setelah dua menit.

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

## Hentikan sejumlah EC2 instans tertentu
<a name="stop-instances-count"></a>

Contoh berikut menghentikan tiga contoh dengan tag yang ditentukan. AWS FIS memilih instance tertentu untuk berhenti secara acak. Ini memulai ulang contoh ini setelah dua menit.

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

## Jalankan dokumen SSM AWS FIS yang telah dikonfigurasi sebelumnya
<a name="cpu-fault-injection"></a>

[Contoh berikut menjalankan injeksi kesalahan CPU selama 60 detik pada EC2 instance yang ditentukan menggunakan dokumen FIS SSM yang telah dikonfigurasi sebelumnya, AWS -CPU-Stress. AWSFIS-Run](actions-ssm-agent.md#awsfis-run-cpu-stress) AWS FIS memonitor percobaan selama dua menit.

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

## Jalankan runbook Otomasi yang telah ditentukan
<a name="run-automation-runbook"></a>

[Contoh berikut menerbitkan notifikasi ke Amazon SNS menggunakan runbook yang disediakan oleh Systems Manager, AWS-Publish. SNSNotification](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-publishsnsnotification.html) Peran harus memiliki izin untuk mempublikasikan pemberitahuan ke topik SNS yang ditentukan.

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

## Tindakan Throttle API pada EC2 instance dengan peran IAM target
<a name="inject-api-throttle"></a>

Contoh berikut membatasi 100% panggilan API yang ditentukan dalam definisi tindakan untuk panggilan API yang dibuat oleh peran IAM yang ditentukan dalam definisi target.

**catatan**  
Jika Anda ingin menargetkan EC2 instans yang merupakan anggota grup Auto Scaling, gunakan tindakan **aws:ec2asg-insufficient-instance-capacity:** -error, dan targetkan berdasarkan grup Auto Scaling sebagai gantinya. Untuk informasi selengkapnya, lihat [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"
}
```

## Uji stres CPU pod di klaster Kubernetes
<a name="stress-test"></a>

Contoh berikut menggunakan Chaos Mesh untuk stress test CPU pod di cluster Amazon EKS Kubernetes selama satu menit.

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

Contoh berikut menggunakan Lakmus untuk menguji stres CPU pod di cluster Amazon EKS Kubernetes selama satu menit.

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

## Pengecualian throughput yang disediakan untuk jumlah tertentu dari Kinesis Data Streams
<a name="throughput-kinesis"></a>

Contoh berikut menampilkan pengecualian throughput yang disediakan untuk 100% permintaan hingga lima Kinesis Data Streams dengan tag yang ditentukan. AWS FIS memilih aliran untuk mempengaruhi secara acak. Setelah 5 menit kesalahan dihapus.

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

## Contoh izin peran percobaan
<a name="permissions-example"></a>

Izin berikut memungkinkan Anda menjalankan `aws:kinesis:stream-provisioned-throughput-exception` dan `aws:kinesis:stream-expired-iterator-exception` tindakan pada aliran tertentu yang memengaruhi 50% permintaan.

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