Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Objectifs pour AWS FIS
Une cible est une ou plusieurs AWS ressources sur lesquelles une action est exécutée par AWS Service d'injection de défauts (AWS FIS) au cours d'une expérience. Les cibles peuvent se trouver dans le même AWS compte que l'expérience, ou dans un compte différent dans le cas d'une expérience multi-comptes. Pour en savoir plus sur le ciblage des ressources dans un autre compte, consultezTravailler avec des expériences multi-comptes pour AWS FIS.
Vous définissez des cibles lorsque vous créez un modèle d'expérience. Vous pouvez utiliser la même cible pour plusieurs actions dans votre modèle de test.
AWS FISidentifie toutes les cibles au début de l'expérience, avant de lancer l'une des actions de l'ensemble d'actions. AWS FISutilise les ressources cibles qu'il sélectionne pour l'ensemble de l'expérience. Si aucune cible n'est trouvée, l'expérience échoue.
Table des matières
Syntaxe cible
Voici la syntaxe d'une cible.
{
"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
"
}
}
}
Lorsque vous définissez une cible, vous fournissez les informations suivantes :
target_name
-
Nom de la cible.
- resourceType
- resourceArns
-
Les Amazon Resource Names (ARN) de ressources spécifiques.
- resourceTags
-
Les balises appliquées à des ressources spécifiques.
- parameters
-
Les paramètres qui identifient les cibles à l'aide d'attributs spécifiques.
- filters
-
Les filtres de ressources couvrent les ressources cibles identifiées à l'aide d'attributs spécifiques.
- selectionMode
-
Mode de sélection des ressources identifiées.
Pour obtenir des exemples, consultez Exemples de cibles.
Types de ressources
Chaque AWS FISl'action est effectuée sur un AWS type de ressource. Lorsque vous définissez une cible, vous devez spécifier exactement un type de ressource. Lorsque vous spécifiez une cible pour une action, celle-ci doit être le type de ressource pris en charge par l'action.
Les types de ressources suivants sont pris en charge par AWS FIS:
-
aws:dynamodb:global-table — Une table globale Amazon DynamoDB
-
aws:ec2:autoscaling-group — Un groupe Amazon Auto Scaling EC2
-
aws:ec2:ebs-volume — Un volume Amazon EBS
-
aws:ec2:instance — Une instance Amazon EC2
-
aws:ec2:spot-instance — Une instance Amazon Spot EC2
-
aws:ec2:subnet — Un sous-réseau Amazon VPC
-
aws:ec2:transit-gateway — Une passerelle de transit
-
aws:ecs:cluster — Un cluster Amazon ECS
-
aws:ecs:task — Une tâche Amazon ECS
-
aws:eks:cluster — Un cluster Amazon EKS
-
aws:eks:nodegroup — Un groupe de nœuds Amazon EKS
-
aws:eks:pod — Un pod Kubernetes
-
aws:elasticache:redis-replicationgroup — Un groupe de réplication (Redis) ElastiCache OSS
-
aws:iam:role — Un rôle IAM
-
aws:rds:cluster — Un cluster de base de données Amazon Aurora
-
aws:rds:db — Une instance de base de données Amazon RDS
-
aws:s3:bucket — Un compartiment Amazon S3
Identifier les ressources cibles
Lorsque vous définissez une cible dans AWS FISconsole, vous pouvez choisir des options spécifiques AWS ressources (d'un type de ressource spécifique) à cibler. Ou, vous pouvez laisser AWS FISidentifiez un groupe de ressources en fonction des critères que vous fournissez.
Pour identifier vos ressources cibles, vous pouvez spécifier les éléments suivants :
-
Ressource IDs — La ressource IDs spécifique AWS ressources. Toutes les ressources IDs doivent représenter le même type de ressource.
-
Balises de ressources — Les balises appliquées à des AWS ressources.
-
Filtres de ressources : chemin et valeurs représentant les ressources dotées d'attributs spécifiques. Pour de plus amples informations, veuillez consulter Filtres de ressources.
-
Paramètres des ressources : paramètres qui représentent les ressources répondant à des critères spécifiques. Pour de plus amples informations, veuillez consulter Paramètres des ressources.
Considérations
-
Vous ne pouvez pas spécifier à la fois un ID de ressource et une étiquette de ressource pour la même cible.
-
Vous ne pouvez pas spécifier à la fois un ID de ressource et un filtre de ressources pour la même cible.
-
Si vous spécifiez une balise de ressource avec une valeur de balise vide, elle n'est pas équivalente à un caractère générique. Il fait correspondre les ressources qui ont une balise avec la clé de balise spécifiée et une valeur de balise vide.
Filtres de ressources
Les filtres de ressources sont des requêtes qui identifient les ressources cibles en fonction d'attributs spécifiques. AWS FISapplique la requête à la sortie d'une API action contenant la description canonique du AWS ressource, selon le type de ressource que vous spécifiez. Les ressources dont les attributs correspondent à la requête sont incluses dans la définition cible.
Chaque filtre est exprimé sous la forme d'un chemin d'attribut et de valeurs possibles. Un chemin est une séquence d'éléments, séparés par des points, qui décrivent le chemin permettant d'atteindre un attribut dans le résultat de l'action Décrire pour une ressource. Chaque élément doit être exprimé en cas de Pascal, même si le résultat de l'action Describe pour une ressource est en cas de chameau. Par exemple, vous devez utiliserAvailabilityZone
, et non availablityZone
comme élément d'attribut.
"filters": [ { "path": "
component
.component
.component
", "values": [ "string
" ] } ],
Le tableau suivant inclut les API actions et AWS CLI commandes que vous pouvez utiliser pour obtenir les descriptions canoniques de chaque type de ressource. AWS FISexécute ces actions en votre nom pour appliquer les filtres que vous spécifiez. La documentation correspondante décrit les ressources incluses par défaut dans les résultats. Par exemple, la documentation des DescribeInstances états dans lesquels des instances ont récemment été résiliées peut apparaître dans les résultats.
Type de ressource | APIaction | AWS CLI command |
---|---|---|
aws:ec2:autoscaling-group | DescribeAutoScalingGroups | describe-auto-scaling-groups |
aws:ec2:ebs-volume | DescribeVolumes | describe-volumes |
aws:ec2:instance | DescribeInstances | décrire les instances |
aws:ec2:subnet | DescribeSubnets | describe-subnets |
aws:ec2:transit-gateway | DescribeTransitGateways | describe-transit-gateways |
aws:ecs:cluster | DescribeClusters | describe-clusters |
aws:ecs:task | DescribeTasks | décrire les tâches |
aws:eks:cluster | DescribeClusters | describe-clusters |
aws:eks:nodegroup | DescribeNodegroup | describe-nodegroup |
aws:elasticache:redis-replicationgroup | DescribeReplicationGroups | describe-replication-groups |
aws:iam:role | ListRoles | lister les rôles |
aws:rds:cluster | D escribeDBClusters | describe-db-clusters |
aws:rds:db | D escribeDBInstances | describe-db-instances |
aws:s3:bucket | ListBuckets | list-buckets |
La logique suivante s'applique à tous les filtres de ressources :
Valeurs à l'intérieur d'un filtre :
OR
Valeurs pour tous les filtres :
AND
Pour obtenir des exemples, consultez Exemples de filtres.
Paramètres des ressources
Les paramètres des ressources identifient les ressources cibles en fonction de critères spécifiques.
Le type de ressource suivant prend en charge les paramètres.
- aws:ec2:ebs-volume
-
-
availabilityZoneIdentifier
— Le code (par exemple, us-east-1a) de la zone de disponibilité qui contient les volumes cibles.
-
- aws:ec2:subnet
-
-
availabilityZoneIdentifier
— Le code (par exemple, us-east-1a) ou l'ID AZ (par exemple, use1-az1) de la zone de disponibilité qui contient les sous-réseaux cibles. -
vpc
— Celui VPC qui contient les sous-réseaux cibles. Il n'en prend pas en charge plus d'un VPC par compte.
-
- aws:ecs:task
-
cluster
— Le cluster qui contient les tâches cibles.service
— Le service qui contient les tâches cibles.
- aws:eks:pod
-
availabilityZoneIdentifier
: facultatif. La zone de disponibilité qui contient les pods cibles. Par exemple,us-east-1d
. Nous déterminons la zone de disponibilité d'un pod en comparant son adresse IP d'hôte et celle CIDR du sous-réseau du cluster.clusterIdentifier
: obligatoire. Nom ou nom ARN du EKS cluster cible.namespace
: obligatoire. L'espace de noms Kubernetes des pods cibles.selectorType
: obligatoire. Type de sélecteur. Les valeurs possibles sontlabelSelector
,deploymentName
etpodName
.selectorValue
: obligatoire. La valeur du sélecteur. Cette valeur dépend de la valeur deselectorType
.targetContainerName
: facultatif. Le nom du conteneur cible tel que défini dans les spécifications du pod. La valeur par défaut est le premier conteneur défini dans les spécifications de chaque pod cible.
- aws:rds:cluster
-
-
writerAvailabilityZoneIdentifiers
: facultatif. Les zones de disponibilité du rédacteur du cluster de base de données. Les valeurs possibles sont les suivantes : une liste d'identifiants de zone de disponibilité séparés par des virgules,.all
-
- aws:rds:db
-
-
availabilityZoneIdentifiers
: facultatif. Les zones de disponibilité de l'instance de base de données à affecter. Les valeurs possibles sont les suivantes : une liste d'identifiants de zone de disponibilité séparés par des virgules,.all
-
- aws:elasticache:redis-replicationgroup
-
-
availabilityZoneIdentifier
: obligatoire. Le code (par exemple, us-east-1a) ou l'ID AZ (par exemple, use1-az1) de la zone de disponibilité qui contient les nœuds cibles.
-
Mode de sélection
Vous définissez le périmètre des ressources identifiées en spécifiant un mode de sélection. AWS FISprend en charge les modes de sélection suivants :
-
ALL
— Exécute l'action sur toutes les cibles. -
COUNT(n)
— Exécute l'action sur le nombre de cibles spécifié, choisies au hasard parmi les cibles identifiées. Par exemple, COUNT (1) sélectionne l'une des cibles identifiées. -
PERCENT(n)
— Exécute l'action sur le pourcentage de cibles spécifié, choisi au hasard parmi les cibles identifiées. Par exemple, PERCENT (25) sélectionne 25 % des cibles identifiées.
Si vous avez un nombre impair de ressources et que vous spécifiez 50 %, AWS FISarrondit vers le bas. Par exemple, si vous ajoutez cinq EC2 instances Amazon comme cibles et que votre périmètre est porté à 50 %, AWS FISarrondit à deux instances. Vous ne pouvez pas spécifier un pourcentage inférieur à une ressource. Par exemple, si vous ajoutez quatre EC2 instances Amazon et que le périmètre est porté à 5 %, AWS FISImpossible de sélectionner une instance.
Si vous définissez plusieurs cibles en utilisant le même type de ressource cible, AWS FISpeut sélectionner la même ressource plusieurs fois.
Quel que soit le mode de sélection que vous utilisez, si l'étendue que vous spécifiez n'identifie aucune ressource, l'expérience échoue.
Exemples de cibles
Vous trouverez ci-dessous des exemples de cibles.
Exemples
Exemple : instances dans le champ spécifié VPC avec les balises spécifiées
Les cibles possibles pour cet exemple sont les EC2 instances Amazon spécifiées VPC avec le tag env=prod. Le mode de sélection indique que AWS FISchoisit l'une de ces cibles au hasard.
{ "targets": { "
randomInstance
": { "resourceType": "aws:ec2:instance", "resourceTags": { "env
": "prod
" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556
" ] } ], "selectionMode": "COUNT(1)" } } }
Exemple : tâches avec les paramètres spécifiés
Les cibles possibles pour cet exemple sont les ECS tâches Amazon avec le cluster et le service spécifiés. Le mode de sélection indique que AWS FISchoisissez l'une de ces cibles au hasard.
{ "targets": { "
randomTask
": { "resourceType": "aws:ecs:task", "parameters": { "cluster": "myCluster
", "service": "myService
" }, "selectionMode": "COUNT(1)" } } }
Exemples de filtres
Voici des exemples de filtres.
Exemples
Exemple : EC2 instances
Lorsque vous spécifiez un filtre pour une action qui prend en charge le type de ressource aws:ec2:instance, AWS FISutilise la EC2 describe-instances commande Amazon et applique le filtre pour identifier les cibles.
La describe-instances commande renvoie une JSON sortie dans laquelle chaque instance est une structure sous laquelle se trouve une structureInstances
. Ce qui suit est une sortie partielle qui inclut les champs marqués avec italics
. Nous allons fournir des exemples qui utilisent ces champs pour spécifier un chemin d'attribut à partir de la structure de la JSON sortie.
{
"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"
},
...
]
}
Pour sélectionner des instances dans une zone de disponibilité spécifique à l'aide d'un filtre de ressources, spécifiez le chemin d'attribut AvailabilityZone
et le code de la zone de disponibilité comme valeur. Par exemple :
"filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ],
Pour sélectionner des instances dans un sous-réseau spécifique à l'aide d'un filtre de ressources, spécifiez le chemin d'attribut SubnetId
et l'ID du sous-réseau comme valeur. Par exemple :
"filters": [ { "path": "SubnetId", "values": [ "subnet-aabbcc11223344556" ] } ],
Pour sélectionner des instances qui se trouvent dans un état d'instance spécifique, spécifiez le chemin d'attribut Name
et l'un des noms d'état suivants comme valeur : pending
| running
| shutting-down
| terminated
| stopping
|stopped
. Par exemple :
"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Exemple : RDS cluster Amazon (cluster de base de données)
Lorsque vous spécifiez un filtre pour une action qui prend en charge le type de ressource aws:rds:cluster, AWS FISexécute la RDS describe-db-clusters commande Amazon et applique le filtre pour identifier les cibles.
La describe-db-clusters commande renvoie une JSON sortie similaire à la suivante pour chaque cluster de base de données. Ce qui suit est une sortie partielle qui inclut les champs marqués avec italics
. Nous allons fournir des exemples qui utilisent ces champs pour spécifier un chemin d'attribut à partir de la structure de la JSON sortie.
[
{
"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",
...
}
]
Pour appliquer un filtre de ressources qui renvoie uniquement les clusters de base de données qui utilisent un moteur de base de données spécifique, spécifiez le chemin d'attribut Engine
et la valeur aurora-postgresql
comme indiqué dans l'exemple suivant.
"filters": [ { "path": "Engine", "values": [ "aurora-postgresql" ] } ],
Pour appliquer un filtre de ressources qui renvoie uniquement les clusters de base de données d'une zone de disponibilité spécifique, spécifiez le chemin et la valeur de l'attribut, comme indiqué dans l'exemple suivant.
"filters": [ { "path": "AvailabilityZones", "values": [ "us-east-2a" ] } ],