Objetivos para AWS FIS - AWS Servicio de inyección de averías

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Objetivos para AWS FIS

Un objetivo es uno o más AWS recursos en los que se realiza una acción AWS Servicio de inyección de fallos (AWS FIS) durante un experimento. Los objetivos pueden estar en la misma AWS cuenta que el experimento o en una cuenta diferente si se trata de un experimento con varias cuentas. Para obtener más información sobre cómo recurrir a recursos de otra cuenta, consulte Trabajar con experimentos con varias cuentas para AWS FIS.

Los destinos se definen al crear una plantilla de experimento. Puede utilizar el mismo destino para varias acciones en la plantilla de experimento.

AWS FISidentifica todos los objetivos al inicio del experimento, antes de iniciar cualquiera de las acciones del conjunto de acciones. AWS FISutiliza los recursos objetivo que selecciona para todo el experimento. Si no se encuentra ningún destino, el experimento falla.

Sintaxis de destino

A continuación, se presenta la sintaxis de un destino.

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

Cuando se define un destino, se proporciona lo siguiente:

target_name

Un nombre para el destino.

resourceType

El tipo de recurso.

resourceArns

Los nombres de recursos de Amazon (ARN) de recursos específicos.

resourceTags

Las etiquetas aplicadas a recursos específicos.

parameters

Los parámetros que identifican los destinos mediante atributos específicos.

filters

Los filtros de recursos se centran en los recursos de destino identificados mediante atributos específicos.

selectionMode

El modo de selección de los recursos identificados.

Para ver ejemplos, consulte Ejemplos de destinos.

Tipos de recurso

Cada AWS FISla acción se realiza en un lugar específico AWS tipo de recurso. Cuando se define un destino, se debe especificar exactamente un tipo de recurso. Al especificar un destino para una acción, el destino debe ser el tipo de recurso compatible con la acción.

Los siguientes tipos de recursos son compatibles con AWS FIS:

  • aws:dynamodb:global-table — Tabla global de Amazon DynamoDB

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

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

  • aws:ec2:instance — Una instancia de Amazon EC2

  • aws:ec2:spot-instance: una instancia puntual de Amazon EC2

  • aws:ec2:subnet — Una subred de Amazon VPC

  • aws:ec2:transit-gateway: puerta de enlace de tránsito

  • aws:ecs:cluster — Un clúster de Amazon ECS

  • aws:ecs:task — Una tarea de Amazon ECS

  • aws:eks:cluster — Un clúster de Amazon EKS

  • aws:eks:nodegroup — Un grupo de nodos de Amazon EKS

  • aws:eks:pod: un pod de Kubernetes

  • aws:elasticache:redis-replicationgroup: un grupo de replicación (Redis) ElastiCache OSS

  • aws:iam:role — Un rol IAM

  • aws:rds:cluster: un clúster de base de datos de Amazon Aurora

  • aws:rds:db — Una instancia de base de datos de Amazon RDS

  • aws:s3:bucket: bucket de Amazon S3

Identificación de recursos de destino

Al definir un objetivo en el AWS FISconsola, puede elegir una específica AWS recursos (de un tipo de recurso específico) a los que dirigirse. O bien, puede dejar AWS FISidentifique un grupo de recursos en función de los criterios que proporcione.

Para identificar sus recursos de destino, puede especificar lo siguiente:

  • Recurso IDs: el recurso IDs de un recurso específico AWS recursos. Todos los recursos IDs deben representar el mismo tipo de recurso.

  • Etiquetas de recursos: las etiquetas que se aplican a un recurso específico AWS recursos.

  • Filtros de recursos: la ruta y los valores que representan los recursos con atributos específicos. Para obtener más información, consulte Filtros de recursos.

  • Parámetros de recursos: los parámetros que representan los recursos que cumplen criterios específicos. Para obtener más información, consulte Parámetros de recursos.

Consideraciones
  • No se puede especificar a la vez un ID de recurso y una etiqueta de recurso para el mismo destino.

  • No se puede especificar a la vez un ID de recurso y un filtro de recurso para el mismo destino.

  • Si especifica una etiqueta de recurso con un valor de etiqueta vacío, no equivale a un comodín. Coincide con recursos que tienen una etiqueta con la clave de etiqueta especificada y un valor de etiqueta vacío.

Filtros de recursos

Los filtros de recursos son consultas que identifican los recursos de destino según atributos específicos. AWS FISaplica la consulta al resultado de una API acción que contiene la descripción canónica del AWS recurso, según el tipo de recurso que especifique. Los recursos que tienen atributos que coinciden con la consulta se incluyen en la definición de destino.

Cada filtro se expresa como una ruta de atributos y valores posibles. Una ruta es una secuencia de elementos, separados por puntos, que describen la ruta para llegar a un atributo en el resultado de la acción Describe de un recurso. Cada elemento debe expresarse en tipo Pascal, incluso aunque el resultado de la acción Describir de un recurso esté en formato camel. Por ejemplo, debe utilizar AvailabilityZone, no availablityZone como elemento de atributo.

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

La siguiente tabla incluye las API acciones y AWS CLI comandos que puede utilizar para obtener las descripciones canónicas de cada tipo de recurso. AWS FISejecuta estas acciones en su nombre para aplicar los filtros que especifique. La documentación correspondiente describe los recursos que se incluyen en los resultados de forma predeterminada. Por ejemplo, la documentación de los estados DescribeInstances indica que las instancias finalizadas recientemente podrían aparecer en los resultados.

La siguiente lógica se aplica a todos los filtros de recursos:

  • Valores dentro de un filtro: OR

  • Valores entre filtros: AND

Para ver ejemplos, consulte Ejemplos de filtros.

Parámetros de recursos

Los parámetros de recursos identifican los recursos de destino según criterios específicos.

El siguiente tipo de recurso admite parámetros.

aws:ec2:ebs-volume
  • availabilityZoneIdentifier: el código (por ejemplo, us-east-1a) de la zona de disponibilidad que contiene los volúmenes de destino.

aws:ec2:subnet
  • availabilityZoneIdentifier: el código (por ejemplo, us-east-1a) o ID de AZ (por ejemplo, use1-az1) de la zona de disponibilidad que contiene las subredes de destino.

  • vpc— El VPC que contiene las subredes de destino. No admite más de una VPC por cuenta.

aws:ecs:task
  • cluster: el clúster que contiene las tareas de destino.

  • service: el servicio que contiene las tareas de destino.

aws:eks:pod
  • availabilityZoneIdentifier: opcional. La zona de disponibilidad que contiene los pods de destino. Por ejemplo, us-east-1d. Determinamos la zona de disponibilidad de un pod comparando su IP de host y la CIDR de la subred del clúster.

  • clusterIdentifier: obligatorio. El nombre o el ARN clúster de destinoEKS.

  • namespace: obligatorio. El espacio de nombres de Kubernetes de los pods de destino.

  • selectorType: obligatorio. El tipo de selector. Los valores posibles son labelSelector, deploymentName y podName.

  • selectorValue: obligatorio. El valor del selector. Este valor depende del valor de selectorType.

  • targetContainerName: opcional. El nombre del contenedor de destino tal y como se especifica en la especificación de pod. El valor predeterminado es el primer contenedor definido en la especificación de cada pod de destino.

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers: opcional. Las zonas de disponibilidad del escritor del clúster de base de datos. Los valores posibles son: una lista de identificadores de zonas de disponibilidad separados por comas, all.

aws:rds:db
  • availabilityZoneIdentifiers: opcional. Las zonas de disponibilidad de la instancia de base de datos que se van a ver afectadas. Los valores posibles son: una lista de identificadores de zonas de disponibilidad separados por comas, all.

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier: obligatorio. El código (por ejemplo, us-east-1a) o ID de AZ (por ejemplo, use1-az1) de la zona de disponibilidad que contiene los nodos de destino.

Modo de selección

Para determinar el alcance de los recursos identificados, especifique un modo de selección. AWS FISadmite los siguientes modos de selección:

  • ALL: ejecuta la acción en todos los destinos.

  • COUNT(n): ejecuta la acción en el número especificado de destinos, elegidos de entre los destinos identificados al azar. Por ejemplo, COUNT (1) selecciona uno de los objetivos identificados.

  • PERCENT(n): ejecuta la acción en el porcentaje especificado de destinos, elegidos de entre los destinos identificados al azar. Por ejemplo, PERCENT (25) selecciona el 25% de los objetivos identificados.

Si tiene un número impar de recursos y especifica el 50%, AWS FISredondea hacia abajo. Por ejemplo, si agregas cinco EC2 instancias de Amazon como objetivos y un alcance del 50%, AWS FISredondea a la baja a dos instancias. No puede especificar un porcentaje inferior a un recurso. Por ejemplo, si añades cuatro EC2 instancias de Amazon y el alcance es del 5%, AWS FISno puede seleccionar una instancia.

Si define varios objetivos con el mismo tipo de recurso de destino, AWS FISpuede seleccionar el mismo recurso varias veces.

Independientemente del modo de selección que utilice, si el alcance que especifique no identifica ningún recurso, el experimento fallará.

Ejemplos de destinos

A continuación, se muestran algunos ejemplos de destinos.

Ejemplo: instancias de lo especificado VPC con las etiquetas especificadas

Los posibles objetivos de este ejemplo son las EC2 instancias de Amazon especificadas VPC con la etiqueta env=prod. El modo de selección especifica que AWS FISelige uno de estos objetivos al azar.

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
Ejemplo: Tareas con los parámetros especificados

Los posibles objetivos de este ejemplo son ECS las tareas de Amazon con el clúster y el servicio especificados. El modo de selección especifica que AWS FISelija uno de estos objetivos al azar.

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

Ejemplos de filtros

A continuación, se muestran algunos ejemplos.

Ejemplo: EC2 instancias

Al especificar un filtro para una acción que admite el tipo de recurso aws:ec2:instance, AWS FISusa el EC2 describe-instances comando Amazon y aplica el filtro para identificar los objetivos.

El describe-instances comando devuelve un JSON resultado en el que cada instancia es una estructura inferiorInstances. El siguiente es un resultado parcial que incluye los campos marcados con italics. Proporcionaremos ejemplos en los que se utilizan estos campos para especificar una ruta de atributo a partir de la estructura de la JSON salida.

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

Para seleccionar instancias en una zona de disponibilidad específica mediante un filtro de recursos, especifique la ruta de atributos de la AvailabilityZone y el código de la zona de disponibilidad como valor. Por ejemplo:

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

Para seleccionar instancias en una subred específica mediante un filtro de recursos, especifique la ruta de atributos de SubnetId y el ID de la subred como valor. Por ejemplo:

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

Para seleccionar instancias que estén en un estado de instancia específico, especifique la ruta de atributos de Name y uno de los siguientes nombres de estado como valor: pending | running | shutting-down | terminated | stopping | stopped. Por ejemplo:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Ejemplo: clúster de Amazon (RDSclúster de base de datos)

Al especificar un filtro para una acción que admite el tipo de recurso aws:rds:cluster, AWS FISejecuta el RDS describe-db-clusters comando Amazon y aplica el filtro para identificar los objetivos.

El describe-db-clusters comando devuelve un JSON resultado similar al siguiente para cada clúster de base de datos. El siguiente es un resultado parcial que incluye los campos marcados con italics. Proporcionaremos ejemplos en los que se utilizan estos campos para especificar una ruta de atributo a partir de la estructura de la JSON salida.

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

Para aplicar un filtro de recursos que devuelva solo los clústeres de base de datos que utilizan un motor de base de datos específico, especifique la ruta de atributos como Engine y el valor como aurora-postgresql, tal y como se muestra en el siguiente ejemplo.

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

Para aplicar un filtro de recursos que devuelva solo los clústeres de base de datos de una zona de disponibilidad específica, especifique la ruta de atributos y el valor tal y como se muestra en el siguiente ejemplo.

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