Objetivos de la 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 de la AWS FIS

Un objetivo es uno o más AWS recursos en los que el Servicio de Inyección de AWS Fallos (AWS FIS) realiza una acción durante un experimento. Los objetivos pueden estar en la misma cuenta de AWS que el experimento o en una cuenta diferente utilizando un experimento con varias cuentas. Para obtener más información sobre cómo recurrir a recursos de otra cuenta, consulte 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 El FIS identifica todos los objetivos al inicio del experimento, antes de iniciar cualquiera de las acciones del conjunto de acciones. AWS El FIS utiliza 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 recurso 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 acción AWS del FIS se realiza en un tipo de AWS recurso específico. 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.

El AWS FIS admite los siguientes tipos de recursos:

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

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

  • aws:ec2:ebs-volume: un volumen de Amazon EBS

  • aws:ec2:instance: una instancia de Amazon EC2

  • aws:ec2:spot-instance: una instancia de spot 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 ElastiCache replicación de Redis

  • aws:iam:role: un rol de 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 la consola FIS, puede elegir recursos específicos (de un tipo AWS de recurso específico) a los que dirigirse. AWS O bien, puede permitir que el AWS FIS identifique un grupo de recursos en función de los criterios que proporcione.

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

  • Identificadores de recursos: los identificadores de AWS recursos específicos. Todos los ID de recursos deben representar el mismo tipo de recurso.

  • Etiquetas de recursos: las etiquetas que se aplican a AWS recursos específicos.

  • 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 El FIS aplica la consulta al resultado de una acción de API que contiene la descripción canónica del AWS recurso, según el tipo de recurso que se 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 acciones y los AWS CLI comandos de la API que puedes usar para obtener las descripciones canónicas de cada tipo de recurso. AWS El FIS ejecuta estas acciones en tu nombre para aplicar los filtros que especifiques. 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: la 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 del host y el CIDR de la subred del clúster.

  • clusterIdentifier: obligatorio. El nombre o ARN del clúster de destino de EKS.

  • 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 El FIS admite 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 destinos 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 destinos identificados.

Si tiene un número impar de recursos y especifica el 50%, el AWS FIS lo redondea a la baja. Por ejemplo, si añade cinco instancias de Amazon EC2 como objetivos y el alcance hasta el 50%, AWS FIS redondea a la baja a dos instancias. No puede especificar un porcentaje inferior a un recurso. Por ejemplo, si añade cuatro instancias de Amazon EC2 y el alcance AWS es del 5%, FIS no podrá seleccionar ninguna instancia.

Si define varios objetivos con el mismo tipo de recurso de destino, AWS FIS puede 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 la VPC especificada con las etiquetas especificadas

Los posibles destinos de este ejemplo son las instancias de Amazon EC2 en la VPC especificada con la etiqueta env=prod. El modo de selección especifica que el AWS FIS elige 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 destinos de este ejemplo son las tareas de Amazon ECS con el clúster y el servicio especificados. El modo de selección especifica que el AWS FIS elija 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: instancias de EC2

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

El comando describe-instances devuelve el resultado JSON en el que cada instancia es una estructura en Instances. El siguiente es un resultado parcial que incluye los campos marcados con cursiva. Proporcionaremos ejemplos en los que se utilizan estos campos para especificar una ruta de atributos a partir de la estructura de la salida de 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" }, ... ] }

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 RDS (clúster de base de datos)

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

El comando describe-db-clusters devuelve un resultado JSON similar al siguiente para cada clúster de base de datos. El siguiente es un resultado parcial que incluye los campos marcados con cursiva. Proporcionaremos ejemplos en los que se utilizan estos campos para especificar una ruta de atributos a partir de la estructura de la salida de 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", ... } ]

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