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 AWS Fault Injection Service (AWS FIS) realiza una acción 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.
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 los 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, consulta Ejemplos de destinos.
Tipos de recurso
Cada AWS FIS acción se realiza en un tipo AWS de 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.
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:lambda:function — Una AWS Lambda función
-
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 AWS FIS consola, puede elegir AWS recursos específicos (de un tipo de recurso específico) a los que dirigirse. O bien, puede permitir que se 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 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 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 API llamada descrita, es necesario que todos los valores coincidan para poder seleccionar un recurso:
OR
Para que coincidan los pares clave/valor de una etiqueta, debe seleccionar los recursos de destino por etiquetas (véase más arriba).
La siguiente tabla incluye las API acciones y AWS CLI los comandos que puedes usar 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.
Tipo de recurso | Acción de API | AWS CLI comando |
---|---|---|
aws:ec2:autoscaling-group | DescribeAutoScalingGroups | describe-auto-scaling-groups |
aws:ec2:ebs-volume | DescribeVolumes | describe-volumes |
aws:ec2:instance | DescribeInstances | describe-instances |
aws:ec2:subnet | DescribeSubnets | describe-subnets |
aws:ec2:transit-gateway | DescribeTransitGateways | describe-transit-gateways |
aws:ecs:cluster | DescribeClusters | describe-clusters |
aws:ecs:task | DescribeTasks | describe-tasks |
aws:eks:cluster | DescribeClusters | describe-clusters |
aws:eks:nodegroup | DescribeNodegroup | describe-nodegroup |
aws:elasticache:redis-replicationgroup | DescribeReplicationGroups | describe-replication-groups |
aws:iam:role | ListRoles | list-roles |
aws:lambda:function | ListFunctions | funciones de lista |
aws:rds:cluster | DescribeDBClusters | describe-db-clusters |
aws:rds:db | DescribeDBInstances | describe-db-instances |
aws:s3:bucket | ListBuckets | list-buckets |
aws:dynamodb:global-table | DescribeTable | tabla de descripciones |
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 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 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, se considerará la segmentación de todas las versiones incluidas en el alias siempre que se invoquen con un alias ARN que contenga el alias. Si se utiliza el alias especial,$LATEST
se ARN tendrán en cuenta las invocaciones a la función base ARN y las invocaciones incluidas$LATEST
en la función básica para evitar 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: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 FIS redondea a la baja. Por ejemplo, si agregas cinco EC2 instancias de Amazon como objetivos y el alcance al 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 es del 5%, no AWS FIS podrás 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 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 se AWS FIS elige uno de estos objetivos de forma aleatoria.
{ "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 se debe AWS FIS elegir uno de estos objetivos de forma aleatoria.
{ "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: EC2 instancias
Al especificar un filtro para una acción que admite el tipo de recurso aws:ec2:instance, utiliza AWS FIS 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 inferior. Instances
El siguiente es un resultado parcial que incluye los campos marcados conitalics
. 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",
...
"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últipleIDs. 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 (RDSclúster de base de datos)
Cuando especificas un filtro para una acción que admite el tipo de recurso aws:rds:cluster, ejecuta AWS FIS 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 conitalics
. 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" ] } ],