Obiettivi per la 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 la AWS FIS

Un obiettivo è una o più AWS risorse su cui viene eseguita un'azione dal AWS AWS Fault Injection Service (FIS) durante un esperimento. Gli obiettivi possono trovarsi nello stesso account AWS 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 FIS identifica tutti gli obiettivi all'inizio dell'esperimento, prima di iniziare qualsiasi azione nel set di azioni. AWS FIS utilizza 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

Gli Amazon Resource Names (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 azione AWS FIS 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 EC2 Auto Scaling

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

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

  • aws:ec2:spot-instance — Un'istanza Spot di Amazon 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 ElastiCache — Un gruppo di replica Redis

  • aws:iam:role — Un ruolo IAM

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

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

  • aws:s3:bucket — Un bucket Amazon S3

Identifica le risorse target

Quando si definisce un obiettivo nella console AWS FIS, è possibile scegliere AWS risorse specifiche (di un tipo di risorsa specifico) da destinare. In alternativa, puoi consentire a AWS FIS di identificare un gruppo di risorse in base ai criteri che fornisci.

Per identificare le risorse di destinazione, è possibile specificare quanto segue:

  • ID delle risorse: gli ID delle AWS risorse specifiche. Tutti gli ID di risorsa 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 FIS applica la query all'output di un'azione API 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 azioni e AWS CLI i comandi dell'API che è possibile utilizzare per ottenere le descrizioni canoniche per ogni tipo di risorsa. AWS FIS esegue 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 VPC che contiene le sottoreti di destinazione. Non supporta più di un 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: opzionale. 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 il CIDR della sottorete del cluster.

  • clusterIdentifier: obbligatorio Il nome o l'ARN del cluster EKS di destinazione.

  • 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: opzionale. 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: opzionale. 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: opzionale. 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 FIS supporta le seguenti modalità di selezione:

  • ALL— Esegue l'azione su tutti gli obiettivi.

  • COUNT(n)— Esegui l'azione sul numero specificato di bersagli, scelti casualmente 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 si dispone di un numero dispari di risorse e si specifica il 50%, AWS FIS arrotonda per difetto. Ad esempio, se aggiungi cinque istanze Amazon EC2 come destinazioni e ambito al 50%, AWS FIS arrotonda per difetto a due istanze. Non è possibile specificare una percentuale inferiore a una risorsa. Ad esempio, se aggiungi quattro istanze Amazon EC2 e l'ambito AWS è al 5%, FIS non può selezionare un'istanza.

Se definisci più obiettivi utilizzando lo stesso tipo di risorsa di destinazione, AWS FIS può 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 VPC specificato con i tag specificati

Le possibili destinazioni per questo esempio sono le istanze Amazon EC2 nel VPC specificato con il tag. env=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 attività di Amazon ECS con il cluster e il servizio specificati. La modalità di selezione specifica che AWS FIS scelga uno di questi obiettivi 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, AWS FIS utilizza il describe-instances comando Amazon EC2 e applica il filtro per identificare le destinazioni.

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

{ "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, specifica 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: cluster Amazon RDS (cluster DB)

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

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

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