Obiettivi per AWS FIS - AWS Servizio di iniezione dei guasti

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Obiettivi per AWS FIS

Un obiettivo è una o più AWS risorse su cui viene eseguita un'azione da AWS Fault Injection Service (AWS FIS) durante un esperimento. Gli obiettivi possono trovarsi nello stesso AWS account dell'esperimento o in un altro account utilizzando un esperimento con più account. Per ulteriori informazioni su come indirizzare le risorse in un account diverso, consulta. Esperimenti multi-account per AWS FIS

Gli obiettivi vengono definiti quando si crea un modello di esperimento. È possibile utilizzare lo stesso obiettivo per più azioni nel modello di esperimento.

AWS FISidentifica tutti gli obiettivi all'inizio dell'esperimento, prima di iniziare qualsiasi azione nel set di azioni. AWS FISutilizza le risorse target selezionate per l'intero esperimento. Se non viene trovato alcun obiettivo, l'esperimento fallisce.

Sintassi di Target

Di seguito è riportata la sintassi per un obiettivo.

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

Quando si definisce un obiettivo, si fornisce quanto segue:

target_name

Un nome per la destinazione.

resourceType

Il tipo di risorsa.

resourceArns

I nomi delle risorse Amazon (ARN) di risorse specifiche.

resourceTags

I tag applicati a risorse specifiche.

parameters

I parametri che identificano gli obiettivi utilizzando attributi specifici.

filters

Il filtro delle risorse elabora le risorse target identificate utilizzando attributi specifici.

selectionMode

La modalità di selezione per le risorse identificate.

Per alcuni esempi, consulta Obiettivi di esempio.

Tipi di risorsa

Ogni AWS FIS azione viene eseguita su un tipo di AWS risorsa specifico. Quando si definisce un obiettivo, è necessario specificare esattamente un tipo di risorsa. Quando si specifica un obiettivo per un'azione, l'obiettivo deve essere il tipo di risorsa supportato dall'azione.

I seguenti tipi di risorse sono supportati da AWS FIS:

  • aws:dynamodb:global-table — Una tabella globale Amazon DynamoDB

  • aws:ec2:autoscaling-group — Un gruppo Amazon Auto Scaling EC2

  • aws:ec2:ebs-volume — Un volume Amazon EBS

  • aws:ec2:instance — Un'istanza Amazon EC2

  • aws:ec2:spot-instance — Un'istanza Amazon Spot EC2

  • aws:ec2:subnet — Una sottorete Amazon VPC

  • aws:ec2:transit-gateway — Un gateway di transito

  • aws:ecs:cluster — Un cluster Amazon ECS

  • aws:ecs:task — Un'attività di Amazon ECS

  • aws:eks:cluster — Un cluster Amazon EKS

  • aws:eks:nodegroup — Un gruppo di nodi Amazon EKS

  • aws:eks:pod — Un pod Kubernetes

  • aws:elasticache:redis-replicationgroup — Un gruppo di replica (Redis) ElastiCache OSS

  • aws:iam:role — Un ruolo IAM

  • aws:rds:cluster — Un cluster Amazon Aurora DB

  • aws:rds:db — Un'istanza Amazon DB RDS

  • aws:s3:bucket — Un bucket Amazon S3

Identifica le risorse target

Quando definisci un obiettivo nella AWS FIS console, puoi scegliere AWS risorse specifiche (di un tipo di risorsa specifico) da indirizzare. In alternativa, puoi consentire di AWS FIS identificare un gruppo di risorse in base ai criteri che fornisci.

Per identificare le risorse di destinazione, puoi specificare quanto segue:

  • Risorsa IDs: la risorsa IDs di AWS risorse specifiche. Tutte le risorse IDs devono rappresentare lo stesso tipo di risorsa.

  • Tag delle risorse: i tag applicati a AWS risorse specifiche.

  • Filtri di risorse: il percorso e i valori che rappresentano risorse con attributi specifici. Per ulteriori informazioni, consulta Filtri di risorse.

  • Parametri delle risorse: i parametri che rappresentano le risorse che soddisfano criteri specifici. Per ulteriori informazioni, consulta Parametri delle risorse.

Considerazioni
  • Non è possibile specificare sia un ID di risorsa che un tag di risorsa per lo stesso obiettivo.

  • Non è possibile specificare sia un ID di risorsa che un filtro di risorse per lo stesso obiettivo.

  • Se specificate un tag di risorsa con un valore di tag vuoto, non è equivalente a un carattere jolly. Corrisponde alle risorse che hanno un tag con la chiave di tag specificata e un valore di tag vuoto.

Filtri di risorse

I filtri delle risorse sono query che identificano le risorse di destinazione in base a attributi specifici. AWS FISapplica la query all'output di un'APIazione che contiene la descrizione canonica della AWS risorsa, in base al tipo di risorsa specificato. Le risorse con attributi che corrispondono alla query sono incluse nella definizione della destinazione.

Ogni filtro è espresso come percorso di attributo e valori possibili. Un percorso è una sequenza di elementi, separati da punti, che descrivono il percorso per raggiungere un attributo nell'output dell'azione Descrivi per una risorsa. Ogni elemento deve essere espresso in Pascal, anche se l'output dell'azione Descrivi per una risorsa è in camel case. Ad esempio, dovresti usareAvailabilityZone, non availablityZone come elemento di attributo.

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

La tabella seguente include le API azioni e AWS CLI i comandi che è possibile utilizzare per ottenere le descrizioni canoniche per ogni tipo di risorsa. AWS FISesegue queste azioni per conto dell'utente per applicare i filtri specificati. La documentazione corrispondente descrive le risorse incluse nei risultati per impostazione predefinita. Ad esempio, la documentazione relativa DescribeInstances agli stati in cui le istanze terminate di recente potrebbe apparire nei risultati.

La seguente logica si applica a tutti i filtri di risorse:

  • Valori all'interno di un filtro: OR

  • Valori tra filtri: AND

Per alcuni esempi, consulta Filtri di esempio.

Parametri delle risorse

I parametri delle risorse identificano le risorse target in base a criteri specifici.

Il seguente tipo di risorsa supporta i parametri.

aws:ec2:ebs-volume
  • availabilityZoneIdentifier— Il codice (ad esempio, us-east-1a) della zona di disponibilità che contiene i volumi di destinazione.

aws:ec2:subnet
  • availabilityZoneIdentifier— Il codice (ad esempio, us-east-1a) o l'ID AZ (ad esempio, use1-az1) della zona di disponibilità che contiene le sottoreti di destinazione.

  • vpc— Il che contiene le sottoreti di destinazione. VPC Non ne supporta più di una VPC per account.

aws:ecs:task
  • cluster— Il cluster che contiene le attività di destinazione.

  • service— Il servizio che contiene le attività di destinazione.

aws:eks:pod
  • availabilityZoneIdentifier Facoltativo. La zona di disponibilità che contiene i pod di destinazione. Ad esempio us-east-1d. Determiniamo la zona di disponibilità di un pod confrontando il relativo hostIP e la CIDR sottorete del cluster.

  • clusterIdentifier: obbligatorio Il nome o ARN del cluster di destinazioneEKS.

  • namespace: obbligatorio Lo spazio dei nomi Kubernetes dei pod di destinazione.

  • selectorType: obbligatorio Il tipo di selettore. I valori possibili sono labelSelector, deploymentName e podName.

  • selectorValue: obbligatorio Il valore del selettore. Questo valore dipende dal valore di. selectorType

  • targetContainerName Facoltativo. Il nome del contenitore di destinazione come definito nelle specifiche del pod. L'impostazione predefinita è il primo contenitore definito in ogni specifica del pod di destinazione.

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers Facoltativo. Le zone di disponibilità del writer del cluster DB. I valori possibili sono: un elenco separato da virgole di identificatori delle zone di disponibilità,all.

aws:rds:db
  • availabilityZoneIdentifiers Facoltativo. Le zone di disponibilità dell'istanza DB interessate. I valori possibili sono: un elenco separato da virgole di identificatori della zona di disponibilità,all.

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier: obbligatorio Il codice (ad esempio, us-east-1a) o l'ID AZ (ad esempio, use1-az1) della zona di disponibilità che contiene i nodi di destinazione.

Modalità di selezione

È possibile definire l'ambito delle risorse identificate specificando una modalità di selezione. AWS FISsupporta le seguenti modalità di selezione:

  • ALL— Esegui l'azione su tutti i bersagli.

  • COUNT(n)— Esegui l'azione sul numero specificato di bersagli, scelti a caso tra i bersagli identificati. Ad esempio, COUNT (1) seleziona uno degli obiettivi identificati.

  • PERCENT(n)— Esegue l'azione sulla percentuale specificata di bersagli, scelti casualmente tra i bersagli identificati. Ad esempio, PERCENT (25) seleziona il 25% degli obiettivi identificati.

Se disponi di un numero dispari di risorse e specifichi il 50%, AWS FIS arrotonda per difetto. Ad esempio, se aggiungi cinque EC2 istanze Amazon come obiettivi e ambito al 50%, AWS FIS arrotonda per difetto a due istanze. Non puoi specificare una percentuale inferiore a una risorsa. Ad esempio, se aggiungi quattro EC2 istanze Amazon e l'ambito è al 5%, non AWS FIS puoi selezionare un'istanza.

Se definisci più obiettivi utilizzando lo stesso tipo di risorsa di destinazione, AWS FIS puoi selezionare la stessa risorsa più volte.

Indipendentemente dalla modalità di selezione utilizzata, se l'ambito specificato non identifica alcuna risorsa, l'esperimento fallisce.

Obiettivi di esempio

Di seguito sono riportati alcuni esempi di obiettivi.

Esempio: istanze nel campo specificato VPC con i tag specificati

I possibili obiettivi per questo esempio sono EC2 le istanze Amazon specificate VPC con il tagenv=prod. La modalità di selezione specifica che AWS FIS sceglie uno di questi obiettivi a caso.

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
Esempio: attività con i parametri specificati

I possibili obiettivi per questo esempio sono le ECS attività di Amazon con il cluster e il servizio specificati. La modalità di selezione specifica che uno di questi obiettivi deve essere AWS FIS scelto a caso.

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

Filtri di esempio

Di seguito sono riportati alcuni esempi di filtri.

Esempio: istanze EC2

Quando specifichi un filtro per un'azione che supporta il tipo di risorsa aws:ec2:instance, utilizza AWS FIS il EC2 describe-instances comando Amazon e applica il filtro per identificare le destinazioni.

Il describe-instances comando restituisce l'JSONoutput in cui ogni istanza è una struttura. Instances Di seguito è riportato un output parziale che include i campi contrassegnati con italics. Forniremo esempi che utilizzano questi campi per specificare un percorso di attributo dalla struttura dell'JSONoutput.

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

Per selezionare le istanze in una zona di disponibilità specifica utilizzando un filtro di risorse, specificate il percorso dell'attributo AvailabilityZone e il codice per la zona di disponibilità come valore. Per esempio:

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

Per selezionare le istanze in una sottorete specifica utilizzando un filtro di risorse, specificate il percorso dell'attributo SubnetId e l'ID della sottorete come valore. Per esempio:

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

Per selezionare le istanze che si trovano in uno stato specifico dell'istanza, specificate il percorso dell'attributo Name e uno dei seguenti nomi di stato come valore: pending | | | | running |shutting-down. terminated stopping stopped Per esempio:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Esempio: RDS cluster Amazon (cluster DB)

Quando specifichi un filtro per un'azione che supporta il tipo di risorsa aws:rds:cluster, esegue AWS FIS il RDS describe-db-clusters comando Amazon e applica il filtro per identificare le destinazioni.

Il describe-db-clusters comando restituisce un JSON output simile al seguente per ogni cluster DB. Di seguito è riportato un output parziale che include i campi contrassegnati con italics. Forniremo esempi che utilizzano questi campi per specificare un percorso di attributo dalla struttura dell'JSONoutput.

[ { "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", ... } ]

Per applicare un filtro di risorse che restituisca solo i cluster DB che utilizzano un motore DB specifico, specificate il percorso dell'attributo Engine e il valore aurora-postgresql come mostrato nell'esempio seguente.

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

Per applicare un filtro di risorse che restituisca solo i cluster DB in una zona di disponibilità specifica, specificate il percorso e il valore dell'attributo come illustrato nell'esempio seguente.

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