Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beispiel AWS FIS-Versuchsvorlagen
Wenn Sie die AWS FIS-API oder ein Befehlszeilentool verwenden, um eine Versuchsvorlage zu erstellen, können Sie die Vorlage in JavaScript Object Notation (JSON) erstellen. Weitere Informationen zu den Komponenten einer Versuchsvorlage finden Sie unterAWS Komponenten der FIS-Versuchsvorlage.
Um ein Experiment mit einer der Beispielvorlagen zu erstellen, speichern Sie es in italics einer JSON-Datei (z. B.my-template.json), ersetzen Sie die Platzhalterwerte durch Ihre eigenen Werte und führen Sie dann den folgenden Befehl https://docs.aws.amazon.com/cli/latest/reference/fis/create-experiment-template.html create-experiment-template aus.
aws fis create-experiment-template --cli-input-json file://my-template.json
Beispiel--Vorlagen
Stoppen Sie EC2-Instances auf der Grundlage von Filtern
Das folgende Beispiel stoppt alle laufenden Amazon EC2-Instances in der angegebenen Region mit dem angegebenen Tag in der angegebenen VPC. Es startet sie nach zwei Minuten neu.
{ "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" }
Stoppen Sie eine bestimmte Anzahl von EC2-Instances
Das folgende Beispiel stoppt drei Instances mit dem angegebenen Tag. AWS FIS wählt die spezifischen Instanzen aus, die nach dem Zufallsprinzip gestoppt werden sollen. Es startet diese Instanzen nach zwei Minuten neu.
{ "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" }
Führen Sie eine vorkonfigurierte aus AWS FIS SSM-Dokument
Im folgenden Beispiel wird eine CPU-Fault-Injection für 60 Sekunden auf der angegebenen EC2-Instance mithilfe eines vorkonfigurierten AWS FIS-SSM-Dokuments ausgeführt. AWSFIS-Run-CPU-Stress AWS FIS überwacht das Experiment zwei Minuten lang.
{ "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" }
Führen Sie ein vordefiniertes Automatisierungs-Runbook aus
Im folgenden Beispiel wird mithilfe eines von Systems Manager bereitgestellten Runbooks eine Benachrichtigung an Amazon SNS veröffentlicht. AWS-PublishSNSNotification Die Rolle muss berechtigt sein, Benachrichtigungen zum angegebenen SNS-Thema zu veröffentlichen.
{ "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" }
Drosseln Sie API-Aktionen auf EC2-Instances mit der IAM-Zielrolle
Im folgenden Beispiel werden 100% der in der Aktionsdefinition angegebenen API-Aufrufe für API-Aufrufe gedrosselt, die von den in der Zieldefinition angegebenen IAM-Rollen getätigt werden.
Anmerkung
Wenn Sie auf EC2-Instances abzielen möchten, die Mitglieder einer Auto Scaling-Gruppe sind, verwenden Sie bitte die Aktion aws:ec2:asg-insufficient-instance-capacity-error und zielen Sie stattdessen auf die Auto Scaling-Gruppe ab. Weitere Informationen finden Sie unter aws:ec2:asg-insufficient-instance-capacity-error.
{ "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" }
Stresstest der CPU von Pods in einem Kubernetes-Cluster
Im folgenden Beispiel wird Chaos Mesh verwendet, um die CPU von Pods in einem Amazon EKS Kubernetes-Cluster eine Minute lang einem Stresstest zu unterziehen.
{ "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": {} }
Im folgenden Beispiel wird Litmus verwendet, um die CPU von Pods in einem Amazon EKS Kubernetes-Cluster eine Minute lang einem Stresstest zu unterziehen.
{ "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": {} }
Ausnahme beim bereitgestellten Durchsatz für die angegebene Anzahl von Kinesis Data Streams
Im folgenden Beispiel wird für 100% der Anfragen bis zu fünf Kinesis Data Streams mit dem angegebenen Tag eine Ausnahme für den bereitgestellten Durchsatz ausgelöst. AWS FIS wählt die Streams, die beeinflusst werden sollen, nach dem Zufallsprinzip aus. Nach 5 Minuten ist der Fehler behoben.
{ "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" } }
Experimentieren Sie, Beispiel für Rollenberechtigungen
Mit der folgenden Berechtigung können Sie die aws:kinesis:stream-expired-iterator-exception Aktionen aws:kinesis:stream-provisioned-throughput-exception und in einem bestimmten Stream ausführen, was sich auf 50% der Anfragen auswirkt.
{ "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" } ] }