View a markdown version of this page

Contoh AWS Templat percobaan FIS - AWS Layanan Injeksi Kesalahan

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

Contoh AWS Templat percobaan FIS

Jika Anda menggunakan API AWS FIS atau alat baris perintah untuk membuat template eksperimen, Anda dapat membuat template di JavaScript Object Notation (JSON). Untuk informasi selengkapnya tentang komponen template percobaan, lihatAWS Komponen template eksperimen FIS.

Untuk membuat eksperimen menggunakan salah satu contoh template, simpan ke file JSON (misalnya,my-template.json), ganti nilai placeholder italics dengan nilai Anda sendiri, lalu jalankan perintah cre ate-experimentent-template berikut.

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

Menghentikan instans EC2 berdasarkan filter

Contoh berikut menghentikan semua instans Amazon EC2 yang berjalan di Wilayah yang ditentukan dengan tag yang ditentukan di VPC yang ditentukan. Ini memulai kembali 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" }

Menghentikan sejumlah instans EC2 tertentu

Contoh berikut menghentikan tiga contoh dengan tag yang ditentukan. AWS FIS memilih contoh spesifik 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 pra-konfigurasi AWS Dokumen SSM FIS

Contoh berikut menjalankan injeksi kesalahan CPU selama 60 detik pada instance EC2 yang ditentukan menggunakan dokumen SSM AWS FIS yang telah dikonfigurasi sebelumnya,. AWSFIS-Run-CPU-Stress AWS FIS memantau 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

Contoh berikut menerbitkan pemberitahuan ke Amazon SNS menggunakan runbook yang disediakan oleh Manajer Sistem,. AWS-PublishSNSNotification Peran harus memiliki izin untuk menerbitkan notifikasi 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 instans EC2 dengan peran IAM target

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 instans EC2 yang merupakan anggota grup Penskalaan Otomatis, gunakan tindakan aws:ec2:asg-insuficient instance-capacity-error, dan targetkan dengan grup Auto Scaling sebagai gantinya. Untuk informasi selengkapnya, lihat aws:ec2: asg-instance-instance-capacity-error yang tidak mencukupi.

{ "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 dari pod di cluster Kubernetes

Contoh berikut menggunakan Chaos Mesh untuk menguji stres 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 Litmus 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 Aliran Data Kinesis

Contoh berikut menampilkan pengecualian throughput yang disediakan untuk 100% permintaan hingga lima Aliran Data Kinesis dengan tag yang ditentukan. AWS FIS memilih aliran yang akan dipengaruhi 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

Izin berikut memungkinkan Anda menjalankan aws:kinesis:stream-expired-iterator-exception tindakan aws:kinesis:stream-provisioned-throughput-exception dan pada aliran tertentu yang berdampak pada 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" } ] }