Ziele für AWS FIS - AWS Fehlerinjektionsservice

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.

Ziele für AWS FIS

Ein Ziel ist eine oder mehrere AWS Ressourcen, für die der AWS AWS Fault Injection Service (FIS) während eines Experiments eine Aktion ausführt. Ziele können sich in demselben AWS-Konto wie das Experiment oder in einem anderen Konto befinden, wenn ein Experiment mit mehreren Konten verwendet wird. Weitere Informationen zum Targeting von Ressourcen in einem anderen Konto finden Sie unterExperimente mit mehreren Konten für AWS FIS.

Sie definieren Ziele, wenn Sie eine Versuchsvorlage erstellen. Sie können dasselbe Ziel für mehrere Aktionen in Ihrer Experimentvorlage verwenden.

AWS FIS identifiziert alle Ziele zu Beginn des Experiments, bevor eine der Aktionen im Aktionssatz gestartet wird. AWS FIS verwendet die Zielressourcen, die es für das gesamte Experiment auswählt. Wenn keine Ziele gefunden werden, schlägt das Experiment fehl.

Zielsyntax

Das Folgende ist die Syntax für ein Ziel.

{ "targets": { "target_name": { "resourceType": "resource-type", "resourceArns": [ "resource-arn" ], "resourceTags": { "tag-key": "tag-value" }, "parameters": { "parameter-name": "parameter-value" }, "filters": [ { "path": "path-string", "values": ["value-string"] } ], "selectionMode": "value" } } }

Wenn Sie ein Ziel definieren, geben Sie Folgendes an:

Zielname

Ein Name für das Ziel.

resourceType

Der Ressourcentyp.

resourceArns

Die Amazon-Ressourcennamen (ARN) bestimmter Ressourcen.

resourceTags

Die Tags, die auf bestimmte Ressourcen angewendet wurden.

parameters

Die Parameter, die Ziele anhand bestimmter Attribute identifizieren.

filters

Der Ressourcenfilter erfasst die identifizierten Zielressourcen anhand bestimmter Attribute.

selectionMode

Der Auswahlmodus für die identifizierten Ressourcen.

Beispiele finden Sie unter Beispielziele.

Ressourcentypen

Jede AWS FIS-Aktion wird für einen bestimmten AWS Ressourcentyp ausgeführt. Wenn Sie ein Ziel definieren, müssen Sie genau einen Ressourcentyp angeben. Wenn Sie ein Ziel für eine Aktion angeben, muss es sich bei dem Ziel um den Ressourcentyp handeln, der von der Aktion unterstützt wird.

Die folgenden Ressourcentypen werden von AWS FIS unterstützt:

  • aws:dynamodb:global-table — Eine globale Amazon DynamoDB-Tabelle

  • aws:ec2:autoscaling-group — Eine Amazon EC2 Auto Scaling Scaling-Gruppe

  • aws:ec2:ebs-volume — Ein Amazon EBS-Volume

  • aws:ec2:instance — Eine Amazon EC2 EC2-Instance

  • aws:ec2:spot-instance — Eine Amazon EC2-Spot-Instance

  • aws:ec2:subnet — Ein Amazon VPC-Subnetz

  • aws:ec2:transit-gateway — Ein Transit-Gateway

  • aws:ecs:cluster — Ein Amazon ECS-Cluster

  • aws:ecs:task — Eine Amazon ECS-Aufgabe

  • aws:eks:cluster — Ein Amazon EKS-Cluster

  • aws:eks:nodegroup — Eine Amazon EKS-Knotengruppe

  • aws:eks:pod — Ein Kubernetes-Pod

  • aws:elasticache:redis-replicationgroup — Eine Redis-Replikationsgruppe ElastiCache

  • aws:iam:role — Eine IAM-Rolle

  • aws:rds:cluster — Ein Amazon Aurora Aurora-DB-Cluster

  • aws:rds:db — Eine Amazon RDS-DB-Instance

  • aws:s3:bucket — Ein Amazon S3 S3-Bucket

Identifizieren Sie die Zielressourcen

Wenn Sie in der AWS FIS-Konsole ein Ziel definieren, können Sie bestimmte AWS Ressourcen (eines bestimmten Ressourcentyps) als Ziel auswählen. Oder Sie können AWS FIS anhand der von Ihnen angegebenen Kriterien eine Gruppe von Ressourcen identifizieren lassen.

Um Ihre Zielressourcen zu identifizieren, können Sie Folgendes angeben:

  • Ressourcen-IDs — Die Ressourcen-IDs bestimmter AWS Ressourcen. Alle Ressourcen-IDs müssen für denselben Ressourcentyp stehen.

  • Ressourcen-Tags — Die Tags, die auf bestimmte AWS Ressourcen angewendet wurden.

  • Ressourcenfilter — Der Pfad und die Werte, die Ressourcen mit bestimmten Attributen repräsentieren. Weitere Informationen finden Sie unter Ressourcenfilter.

  • Ressourcenparameter — Die Parameter, die Ressourcen darstellen, die bestimmte Kriterien erfüllen. Weitere Informationen finden Sie unter Ressourcenparameter.

Überlegungen
  • Sie können nicht sowohl eine Ressourcen-ID als auch ein Ressourcen-Tag für dasselbe Ziel angeben.

  • Sie können nicht sowohl eine Ressourcen-ID als auch einen Ressourcenfilter für dasselbe Ziel angeben.

  • Wenn Sie ein Ressourcen-Tag mit einem leeren Tag-Wert angeben, entspricht dies nicht einem Platzhalter. Es entspricht Ressourcen, die ein Tag mit dem angegebenen Tag-Schlüssel und einem leeren Tag-Wert haben.

Ressourcenfilter

Ressourcenfilter sind Abfragen, die Zielressourcen anhand bestimmter Attribute identifizieren. AWS FIS wendet die Abfrage auf die Ausgabe einer API-Aktion an, die die kanonische Beschreibung der AWS Ressource entsprechend dem von Ihnen angegebenen Ressourcentyp enthält. Ressourcen mit Attributen, die der Abfrage entsprechen, sind in der Zieldefinition enthalten.

Jeder Filter wird als Attributpfad und mögliche Werte ausgedrückt. Ein Pfad ist eine durch Punkte getrennte Folge von Elementen, die in der Ausgabe der Aktion „Beschreiben“ für eine Ressource den Pfad zum Erreichen eines Attributs beschreiben. Jedes Element muss in Pascal-Groß- und Kleinschreibung ausgedrückt werden, auch wenn die Ausgabe der Aktion Describe für eine Ressource in Camel-Schreibweise erfolgt. Beispielsweise sollten SieAvailabilityZone, nicht availablityZone als Attributelement verwenden.

"filters": [ { "path": "component.component.component", "values": [ "string" ] } ],

Die folgende Tabelle enthält die API-Aktionen und AWS CLI -Befehle, mit denen Sie die kanonischen Beschreibungen für jeden Ressourcentyp abrufen können. AWS FIS führt diese Aktionen in Ihrem Namen aus, um die von Ihnen angegebenen Filter anzuwenden. In der entsprechenden Dokumentation werden die Ressourcen beschrieben, die standardmäßig in den Ergebnissen enthalten sind. Beispielsweise könnte die Dokumentation für DescribeInstances Staaten, in denen Instanzen kürzlich beendet wurden, in den Ergebnissen erscheinen.

Die folgende Logik gilt für alle Ressourcenfilter:

  • Werte innerhalb eines Filters — OR

  • Werte in allen Filtern — AND

Beispiele finden Sie unter Beispielfilter.

Ressourcenparameter

Ressourcenparameter identifizieren Zielressourcen nach bestimmten Kriterien.

Der folgende Ressourcentyp unterstützt Parameter.

aws:ec2:ebs-volume
  • availabilityZoneIdentifier— Der Code (z. B. us-east-1a) der Availability Zone, die die Zielvolumes enthält.

aws:ec2:subnet
  • availabilityZoneIdentifier— Der Code (z. B. us-east-1a) oder die AZ-ID (z. B. use1-az1) der Availability Zone, die die Zielsubnetze enthält.

  • vpc— Die VPC, die die Zielsubnetze enthält. Unterstützt nicht mehr als eine VPC pro Konto.

aws:ecs:task
  • cluster— Der Cluster, der die Zielaufgaben enthält.

  • service— Der Dienst, der die Zielaufgaben enthält.

aws:eks:pod
  • availabilityZoneIdentifier Optional. Die Availability Zone, die die Ziel-Pods enthält. z. B. us-east-1d. Wir bestimmen die Availability Zone eines Pods, indem wir seine Host-IP und die CIDR des Cluster-Subnetzes vergleichen.

  • clusterIdentifier – Erforderlich. Der Name oder ARN des EKS-Ziel-Clusters.

  • namespace – Erforderlich. Der Kubernetes-Namespace der Ziel-Pods.

  • selectorType – Erforderlich. Der Selektortyp. Die möglichen Werte sind labelSelector, deploymentName und podName.

  • selectorValue – Erforderlich. Der Selektorwert. Dieser Wert hängt vom Wert von selectorType ab.

  • targetContainerName Optional. Der Name des Zielcontainers, wie in der Pod-Spezifikation definiert. Die Standardeinstellung ist der erste Container, der in jeder Ziel-Pod-Spezifikation definiert ist.

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers Optional. Die Availability Zones des Writers des DB-Clusters. Mögliche Werte sind: eine durch Kommas getrennte Liste von Availability Zone-Identifikatoren,. all

aws:rds:db
  • availabilityZoneIdentifiers Optional. Die Availability Zones der DB-Instance, die betroffen sein soll. Mögliche Werte sind: eine durch Kommas getrennte Liste von Availability Zone-Identifikatoren,. all

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier – Erforderlich. Der Code (z. B. us-east-1a) oder die AZ-ID (z. B. use1-az1) der Availability Zone, die die Zielknoten enthält.

Auswahlmodus

Sie können die identifizierten Ressourcen eingrenzen, indem Sie einen Auswahlmodus angeben. AWS FIS unterstützt die folgenden Auswahlmodi:

  • ALL— Führt die Aktion auf allen Zielen aus.

  • COUNT(n)— Führt die Aktion für die angegebene Anzahl von Zielen aus, die nach dem Zufallsprinzip aus den identifizierten Zielen ausgewählt wurden. Beispielsweise wählt COUNT (1) eines der identifizierten Ziele aus.

  • PERCENT(n)— Führt die Aktion für den angegebenen Prozentsatz von Zielen aus, die nach dem Zufallsprinzip aus den identifizierten Zielen ausgewählt wurden. PERCENT (25) wählt beispielsweise 25% der identifizierten Ziele aus.

Wenn Sie über eine ungerade Anzahl von Ressourcen verfügen und 50% angeben, rundet AWS FIS ab. Wenn Sie beispielsweise fünf Amazon EC2 EC2-Instances als Ziele hinzufügen und den Umfang auf 50% erhöhen, rundet AWS FIS auf zwei Instances ab. Sie können keinen Prozentsatz angeben, der weniger als eine Ressource ist. Wenn Sie beispielsweise vier Amazon EC2 EC2-Instances hinzufügen und den Umfang auf 5% erhöhen, kann AWS FIS keine Instance auswählen.

Wenn Sie mehrere Ziele mit demselben Zielressourcentyp definieren, kann AWS FIS dieselbe Ressource mehrmals auswählen.

Unabhängig davon, welchen Auswahlmodus Sie verwenden, schlägt das Experiment fehl, wenn der von Ihnen angegebene Bereich keine Ressourcen identifiziert.

Beispielziele

Im Folgenden finden Sie Beispielziele.

Beispiel: Instances in der angegebenen VPC mit den angegebenen Tags

Die möglichen Ziele für dieses Beispiel sind Amazon EC2 EC2-Instances in der angegebenen VPC mit dem Tag. env=prod Der Auswahlmodus gibt an, dass AWS FIS eines dieser Ziele nach dem Zufallsprinzip auswählt.

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
Beispiel: Aufgaben mit den angegebenen Parametern

Die möglichen Ziele für dieses Beispiel sind Amazon ECS-Aufgaben mit dem angegebenen Cluster und Service. Der Auswahlmodus gibt an, dass AWS FIS eines dieser Ziele nach dem Zufallsprinzip auswählt.

{ "targets": { "randomTask": { "resourceType": "aws:ecs:task", "parameters": { "cluster": "myCluster", "service": "myService" }, "selectionMode": "COUNT(1)" } } }

Beispielfilter

Im Folgenden finden Sie Beispielfilter.

Beispiel: EC2-Instances

Wenn Sie einen Filter für eine Aktion angeben, die den Ressourcentyp aws:ec2:instance unterstützt, verwendet AWS FIS den Amazon EC2 describe-instances EC2-Befehl und wendet den Filter an, um die Ziele zu identifizieren.

Der describe-instances Befehl gibt eine JSON-Ausgabe zurück, in der sich jede Instance einer Struktur unterordnet. Instances Im Folgenden finden Sie eine Teilausgabe, die kursiv markierte Felder enthält. Wir werden Beispiele bereitstellen, die diese Felder verwenden, um einen Attributpfad aus der Struktur der JSON-Ausgabe anzugeben.

{ "Reservations": [ { "Groups": [], "Instances": [ { "ImageId": "ami-00111111111111111", "InstanceId": "i-00aaaaaaaaaaaaaaa", "InstanceType": "t2.micro", "KeyName": "virginia-kp", "LaunchTime": "2020-09-30T11:38:17.000Z", "Monitoring": { "State": "disabled" }, "Placement": { "AvailabilityZone": "us-east-1a", "GroupName": "", "Tenancy": "default" }, "PrivateDnsName": "ip-10-0-1-240.ec2.internal", "PrivateIpAddress": "10.0.1.240", "ProductCodes": [], "PublicDnsName": "ec2-203-0-113-17.compute-1.amazonaws.com", "PublicIpAddress": "203.0.113.17", "State": { "Code": 16, "Name": "running" }, "StateTransitionReason": "", "SubnetId": "subnet-aabbcc11223344556", "VpcId": "vpc-00bbbbbbbbbbbbbbbbb", ... }, ... { ... } ], "OwnerId": "123456789012", "ReservationId": "r-aaaaaabbbbb111111" }, ... ] }

Um mithilfe eines Ressourcenfilters Instanzen in einer bestimmten Availability Zone auszuwählen, geben Sie den Attributpfad für AvailabilityZone und den Code für die Availability Zone als Wert an. Beispielsweise:

"filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ],

Um Instances in einem bestimmten Subnetz mithilfe eines Ressourcenfilters auszuwählen, geben Sie den Attributpfad für SubnetId und die ID des Subnetzes als Wert an. Beispielsweise:

"filters": [ { "path": "SubnetId", "values": [ "subnet-aabbcc11223344556" ] } ],

Um Instances auszuwählen, die sich in einem bestimmten Instanzstatus befinden, geben Sie den Attributpfad für Name und einen der folgenden Statusnamen als Wert an: pending | | | running | shutting-down terminated |stopping. stopped Beispielsweise:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Beispiel: Amazon RDS-Cluster (DB-Cluster)

Wenn Sie einen Filter für eine Aktion angeben, die den Ressourcentyp aws:rds:cluster unterstützt, führt AWS FIS den Amazon describe-db-clusters RDS-Befehl aus und wendet den Filter an, um die Ziele zu identifizieren.

Der describe-db-clusters Befehl gibt für jeden DB-Cluster eine JSON-Ausgabe zurück, die der folgenden ähnelt. Bei der folgenden Ausgabe handelt es sich um einen Teil der Ausgabe, die kursiv markierte Felder enthält. Wir werden Beispiele bereitstellen, die diese Felder verwenden, um einen Attributpfad aus der Struktur der JSON-Ausgabe anzugeben.

[ { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-2a", "us-east-2b", "us-east-2c" ], "BackupRetentionPeriod": 7, "DatabaseName": "", "DBClusterIdentifier": "database-1", "DBClusterParameterGroup": "default.aurora-postgresql11", "DBSubnetGroup": "default-vpc-01234567abc123456", "Status": "available", "EarliestRestorableTime": "2020-11-13T15:08:32.211Z", "Endpoint": "database-1.cluster-example.us-east-2.rds.amazonaws.com", "ReaderEndpoint": "database-1.cluster-ro-example.us-east-2.rds.amazonaws.com", "MultiAZ": false, "Engine": "aurora-postgresql", "EngineVersion": "11.7", ... } ]

Um einen Ressourcenfilter anzuwenden, der nur die DB-Cluster zurückgibt, die eine bestimmte DB-Engine verwenden, geben Sie den Attributpfad als Engine und den Wert an, aurora-postgresql wie im folgenden Beispiel gezeigt.

"filters": [ { "path": "Engine", "values": [ "aurora-postgresql" ] } ],

Um einen Ressourcenfilter anzuwenden, der nur die DB-Cluster in einer bestimmten Availability Zone zurückgibt, geben Sie den Attributpfad und den Wert an, wie im folgenden Beispiel gezeigt.

"filters": [ { "path": "AvailabilityZones", "values": [ "us-east-2a" ] } ],