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.
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 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 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.
Contenido
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, consulta 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:arc: zonal-shift-managed-resource — AWS Recurso registrado con el cambio zonal de ARC
-
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:replicationgroup: ElastiCache un grupo de replicación
-
aws:iam:role: un rol de IAM
-
aws:lambda:function — Una función AWS Lambda
-
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 AWS FIS, puede elegir AWS recursos específicos (de un tipo de recurso específico) a los que dirigirse. 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:
-
Recurso IDs: el recurso IDs de AWS recursos específicos. Todos los recursos IDs 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.
-
Si especifica más de una etiqueta, todas las etiquetas especificadas deben estar presentes en el recurso de destino para poder seleccionarlo (
AND
).
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 punto representa la expansión de un elemento. 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 lógica se aplica a todos los filtros de recursos:
Si se proporcionan varios filtros, incluidos los filtros con la misma ruta, todos los filtros deben coincidir para poder seleccionar un recurso:
AND
Si se proporcionan varios valores para un solo filtro, es necesario que todos los valores coincidan para poder seleccionar un recurso:
OR
Si se encuentran varios valores en la ubicación de la ruta de la llamada a la API descrita, es necesario que todos los valores coincidan para poder seleccionar un recurso:
OR
Para que coincidan los pares clave/valor de una etiqueta, debes seleccionar los recursos de destino por etiquetas (véase más arriba).
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.
Para ver ejemplos, consulta 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 sonlabelSelector
,deploymentName
ypodName
.selectorValue
: obligatorio. El valor del selector. Este valor depende del valor deselectorType
.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:lambda:function
-
-
functionQualifier
: opcional. La versión o el alias de la función a la que se dirige. Si no se especifica ningún calificador, se tendrán en cuenta todas las invocaciones para la segmentación. Si se especifica un alias con varias versiones, todas las versiones incluidas en el alias se considerarán para la segmentación siempre que se invoquen mediante un ARN que contenga el alias. Si$LATEST
se utiliza el alias especial, las invocaciones a la función base ARN y las invocaciones incluidas$LATEST
en el ARN se considerarán para la inyección de errores. Para obtener más información sobre las versiones de Lambda, consulte Administrar versiones de funciones Lambda en la guía del usuario.AWS Lambda
-
- 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: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 agregas cinco EC2 instancias de Amazon 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ñades cuatro EC2 instancias de Amazon 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.
Ejemplos
Ejemplo: Instancias de la VPC especificada con las etiquetas especificadas
Los posibles objetivos de este ejemplo son las EC2 instancias de Amazon 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.
Ejemplos
Ejemplo: instancias EC2
Al especificar un filtro para una acción que admite el tipo de recurso aws:ec2:instance, FIS AWS utiliza el comando EC2 describe-instances Amazon 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. italics
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",
...
"NetworkInterfaces": [
{
...
"Groups": [
{
"GroupName": "sec-group-1",
"GroupId
": "sg-a0011223344556677"
},
{
"GroupName": "sec-group-1",
"GroupId
": "sg-b9988776655443322"
}
],
...
},
...
},
...
{
...
}
],
"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" ]
}
],
Para seleccionar instancias que tengan varios grupos de seguridad adjuntos, especifique un filtro único con la ruta del atributo para cada GroupId
grupo de seguridad múltiple IDs. Por ejemplo:
"filters": [
{
"path": "NetworkInterfaces.Groups.GroupId",
"values": [
"sg-a0011223344556677",
"sg-f1100110011001100"
]
}
],
Para seleccionar instancias que tengan todos los grupos de seguridad asociados, especifique varios filtros con la ruta del atributo GroupId
y un único identificador de grupo de seguridad para cada filtro. Por ejemplo:
"filters": [
{
"path": "NetworkInterfaces.Groups.GroupId",
"values": [
"sg-a0011223344556677"
]
},
{
"path": "NetworkInterfaces.Groups.GroupId",
"values": [
"sg-b9988776655443322"
]
}
],
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. italics
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" ]
}
],