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 è uno o più AWS risorse su cui viene eseguita un'azione da AWS Servizio di iniezione dei guasti (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. Utilizzo di esperimenti con più 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.
Indice
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
Ciascuno AWS FISl'azione viene eseguita su uno specifico AWS tipo di risorsa. 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 si definisce un obiettivo nel AWS FISconsole, puoi scegliere uno specifico AWS risorse (di un tipo di risorsa specifico) a cui indirizzare. Oppure puoi lasciare AWS FISidentifica 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 specifiche AWS risorse. Tutte le risorse IDs devono rappresentare lo stesso tipo di risorsa.
-
Tag delle risorse: i tag applicati a specifiche AWS risorse.
-
Filtri di risorse: il percorso e i valori che rappresentano le 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 del 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 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.
Tipo di risorsa | APIazione | AWS CLI command |
---|---|---|
aws:ec2:autoscaling-group | DescribeAutoScalingGroups | describe-auto-scaling-groups |
aws:ec2:ebs-volume | DescribeVolumes | describe-volumes |
aws:ec2:instance | DescribeInstances | descrivere le istanze |
aws:ec2:subnet | DescribeSubnets | describe-subnets |
aws:ec2:transit-gateway | DescribeTransitGateways | describe-transit-gateways |
aws:ecs:cluster | DescribeClusters | describe-clusters |
aws:ecs:task | DescribeTasks | descrizione-attività |
aws:eks:cluster | DescribeClusters | describe-clusters |
aws:eks:nodegroup | DescribeNodegroup | describe-nodegroup |
aws:elasticache:redis-replicationgroup | DescribeReplicationGroups | describe-replication-groups |
aws:iam:role | ListRoles | elenca-ruoli |
aws:rds:cluster | D escribeDBClusters | describe-db-clusters |
aws:rds:db | D escribeDBInstances | describe-db-instances |
aws:s3:bucket | ListBuckets | elenchi |
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 esempious-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 sonolabelSelector
,deploymentName
epodName
.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 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 disponi di un numero dispari di risorse e specifichi il 50%, AWS FISarrotonda per difetto. Ad esempio, se aggiungi cinque EC2 istanze Amazon come obiettivi e ambito al 50%, AWS FISarrotonda per difetto a due istanze. Non è possibile specificare una percentuale inferiore a una risorsa. Ad esempio, se aggiungi quattro EC2 istanze Amazon e l'ambito viene raggiunto al 5%, AWS FISnon riesco a selezionare un'istanza.
Se definisci più obiettivi utilizzando lo stesso tipo di risorsa di destinazione, AWS FISpuò selezionare la stessa risorsa più volte.
Indipendentemente dalla modalità di selezione utilizzata, se l'ambito specificato non identifica alcuna risorsa, l'esperimento ha esito negativo.
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 tag env=prod. La modalità di selezione specifica che AWS FISsceglie uno di questi bersagli 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 AWS FISscegli 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.
Esempi
Esempio: istanze EC2
Quando specifichi un filtro per un'azione che supporta il tipo di risorsa aws:ec2:Instance, AWS FISutilizza 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 strutturaInstances
. 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, AWS FISesegue il RDS describe-db-clusters comando Amazon e applica il filtro per identificare gli obiettivi.
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" ] } ],