Metas para AWS FIS - AWS Serviço de injeção de falhas

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Metas para AWS FIS

Um alvo é um ou mais AWS recursos nos quais uma ação é executada por AWS Serviço de injeção de falhas (AWS FIS) durante um experimento. Os alvos podem estar na mesma AWS conta do experimento ou em uma conta diferente usando um experimento com várias contas. Para saber mais sobre como segmentar recursos em uma conta diferente, consulte Trabalhando com experimentos com várias contas para AWS FIS.

Você define destinos ao criar um modelo de experimento. Você pode usar o mesmo destino para várias ações em seu modelo de experimento.

AWS FISidentifica todos os alvos no início do experimento, antes de iniciar qualquer uma das ações no conjunto de ações. AWS FISusa os recursos de destino que ele seleciona para todo o experimento. Se nenhum destino for encontrado, o experimento falhará.

Sintaxe de destino

A seguir está a sintaxe para um 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" } } }

Quando você define um destino, fornece o seguinte:

target_name

Um nome para o destino.

resourceType

O tipo de recurso.

resourceArns

Os nomes de recursos da Amazon (ARN) de recursos específicos.

resourceTags

As tags aplicadas a recursos específicos.

parameters

Os parâmetros que identificam destinos usando atributos específicos.

filters

O recurso filtra o escopo dos recursos de destino identificados usando atributos específicos.

selectionMode

O modo de seleção dos recursos identificados.

Para ver exemplos, consulte Exemplos de destinos.

Tipos de recursos

Cada AWS FISação é executada em um específico AWS tipo de recurso. Quando você define um destino, deve especificar exatamente um tipo de recurso. Quando você especifica um destino para uma ação, o destino deve ser o tipo de recurso compatível com a ação.

Os seguintes tipos de recursos são suportados pelo AWS FIS:

  • aws:dynamodb:global-table — Uma tabela global do Amazon DynamoDB

  • aws:ec2:autoscaling-group — Um grupo do Amazon Auto Scaling EC2

  • aws:ec2:ebs-volume — Um volume da Amazon EBS

  • aws:ec2:instance — Uma instância da Amazon EC2

  • aws:ec2:spot-instance — Uma instância spot da Amazon EC2

  • aws:ec2:subnet — Uma sub-rede da Amazon VPC

  • aws:ec2:transit-gateway: um gateway de trânsito

  • aws:ecs:cluster — Um cluster da Amazon ECS

  • aws:ecs:task — Uma tarefa da Amazon ECS

  • aws:eks:cluster — Um cluster da Amazon EKS

  • aws:eks:nodegroup — Um grupo de nós da Amazon EKS

  • aws:eks:pod – Um pod do Kubernetes

  • aws:elasticache:redis-replicationgroup — Um grupo de replicação (Redis) ElastiCache OSS

  • aws:iam:role — Uma função IAM

  • aws:rds:cluster – Um cluster do Amazon Aurora DB

  • aws:rds:db — Uma instância de banco de dados Amazon RDS

  • aws:s3:bucket: um bucket do Amazon S3

Identificar recursos de destino

Quando você define um alvo no AWS FISconsole, você pode escolher um específico AWS recursos (de um tipo de recurso específico) a serem direcionados. Ou, você pode deixar AWS FISidentifique um grupo de recursos com base nos critérios que você fornece.

Para identificar seus recursos de destino, você pode especificar o seguinte:

  • Recurso IDs — O recurso IDs específico AWS recursos. Todos os recursos IDs devem representar o mesmo tipo de recurso.

  • Tags de recursos — As tags aplicadas a determinadas AWS recursos.

  • Filtros de recursos – O caminho e os valores que representam recursos com atributos específicos. Para obter mais informações, consulte Filtros de recursos.

  • Parâmetros de recursos – Os parâmetros que representam recursos que atendem a critérios específicos. Para obter mais informações, consulte Parâmetros de recurso.

Considerações
  • Você não pode especificar um ID de recurso e uma tag de recurso para o mesmo destino.

  • Você não pode especificar um ID de recurso e um filtro de recurso para o mesmo destino.

  • Se você especificar uma tag de recurso com um valor de tag vazio, isso não é equivalente a um caractere curinga. Ele combina recursos que têm uma tag com a chave de tag especificada e um valor de tag vazio.

Filtros de recursos

Os filtros de recursos são consultas que identificam os recursos de destino de acordo com atributos específicos. AWS FISaplica a consulta à saída de uma API ação que contém a descrição canônica do AWS recurso, de acordo com o tipo de recurso que você especificar. Os recursos que têm atributos que correspondem à consulta são incluídos na definição de destino.

Cada filtro é expresso como um caminho de atributo e valores possíveis. Um caminho é uma sequência de elementos, separados por pontos, que descrevem o caminho para alcançar um atributo na saída da ação Descrever de um recurso. Cada elemento deve ser expresso em letras maiúsculas e minúsculas, mesmo que a saída da ação Descrever de um recurso esteja em maiúsculas e minúsculas. Por exemplo, você deve usar AvailabilityZone, não availablityZone como um elemento de atributo.

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

A tabela a seguir inclui as API ações e AWS CLI comandos que você pode usar para obter as descrições canônicas de cada tipo de recurso. AWS FISexecuta essas ações em seu nome para aplicar os filtros que você especifica. A documentação correspondente descreve os recursos incluídos nos resultados por padrão. Por exemplo, a documentação DescribeInstances indica que instâncias encerradas recentemente podem aparecer nos resultados.

A lógica a seguir se aplica a todos os filtros de recursos:

  • Valores dentro de um filtro – OR

  • Valores entre filtros – AND

Para ver exemplos, consulte Exemplo de filtros.

Parâmetros de recurso

Os parâmetros dos recursos identificam os recursos de destino de acordo com critérios específicos.

O tipo de recurso a seguir oferece suporte a parâmetros.

aws:ec2:ebs-volume
  • availabilityZoneIdentifier – O código (por exemplo, us-east-1a) da zona de disponibilidade que contém os volumes de destino.

aws:ec2:subnet
  • availabilityZoneIdentifier – O código (por exemplo, us-east-1a) ou o ID da AZ (por exemplo, use1-az1) da zona de disponibilidade que contém as sub-redes de destino.

  • vpc— O VPC que contém as sub-redes de destino. Não suporta mais de um VPC por conta.

aws:ecs:task
  • cluster – O cluster que contém as tarefas de destino.

  • service – O cluster que contém as tarefas de destino.

aws:eks:pod
  • availabilityZoneIdentifier: optional. A zona de disponibilidade que contém os pods de destino. Por exemplo, us-east-1d. Determinamos a zona de disponibilidade de um pod comparando seu HostIP e o CIDR da sub-rede do cluster.

  • clusterIdentifier – obrigatório. O nome ou ARN do EKS cluster de destino.

  • namespace – obrigatório. O namespace do Kubernetes dos pods de destino.

  • selectorType – obrigatório. O tipo de seletor. Os valores possíveis são labelSelector, deploymentName e podName.

  • selectorValue – obrigatório. O valor do seletor. Esse valor depende do valor de selectorType.

  • targetContainerName: optional. O nome do contêiner de destino, conforme a especificação do pod. O padrão é o primeiro contêiner definido em cada especificação do pod de destino.

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers: optional. As zonas de disponibilidade do gravador do cluster de banco de dados. Os valores possíveis são: uma lista separada por vírgulas de identificadores de zona de disponibilidade, all.

aws:rds:db
  • availabilityZoneIdentifiers: optional. As zonas de disponibilidade da instância de banco de dados a serem afetadas. Os valores possíveis são: uma lista separada por vírgulas de identificadores de zona de disponibilidade, all.

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier – obrigatório. O código (por exemplo, us-east-1a) ou a ID da AZ (por exemplo, use1-az1) da zona de disponibilidade que contém os nós de destino.

Modo de seleção

Você define o escopo dos recursos identificados especificando um modo de seleção. AWS FISsuporta os seguintes modos de seleção:

  • ALL – Executar a ação em todos os destinos.

  • COUNT(n) – Executar a ação no número especificado de destinos escolhidos aleatoriamente entre os destinos identificados. Por exemplo, COUNT (1) seleciona um dos alvos identificados.

  • PERCENT(n) – Executar a ação no percentual especificado de destinos escolhidos aleatoriamente entre os destinos identificados. Por exemplo, PERCENT (25) seleciona 25% dos alvos identificados.

Se você tiver um número ímpar de recursos e especificar 50%, AWS FISarredonda para baixo. Por exemplo, se você adicionar cinco EC2 instâncias da Amazon como alvos e o escopo chegar a 50%, AWS FISarredonda para duas instâncias. Você não pode especificar uma porcentagem menor que um recurso. Por exemplo, se você adicionar quatro EC2 instâncias da Amazon e o escopo chegar a 5%, AWS FISnão consigo selecionar uma instância.

Se você definir vários alvos usando o mesmo tipo de recurso de destino, AWS FISpode selecionar o mesmo recurso várias vezes.

Independentemente do modo de seleção usado, se o escopo especificado não identificar recursos, o experimento falhará.

Exemplos de destinos

Os seguintes são exemplos de destinos.

Exemplo: Instâncias no especificado VPC com as tags especificadas

Os alvos possíveis para este exemplo são EC2 instâncias da Amazon especificadas VPC com a tag. env=prod. O modo de seleção especifica que AWS FISescolhe um desses alvos aleatoriamente.

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
Exemplo: tarefas com os parâmetros especificados

Os alvos possíveis para este exemplo são ECS tarefas da Amazon com o cluster e o serviço especificados. O modo de seleção especifica que AWS FISescolha um desses alvos aleatoriamente.

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

Exemplo de filtros

Os seguintes são exemplos de filtros.

Exemplo: EC2 instâncias

Quando você especifica um filtro para uma ação compatível com o tipo de recurso aws:ec2:instance, AWS FISusa o EC2 describe-instances comando Amazon e aplica o filtro para identificar os alvos.

O describe-instances comando retorna a JSON saída em que cada instância está embaixo de uma estruturaInstances. A seguir está uma saída parcial que inclui campos marcados com italics. Forneceremos exemplos que usam esses campos para especificar um caminho de atributo a partir da estrutura da JSON saída.

{ "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 selecionar instâncias em uma zona de disponibilidade específica usando um filtro de recursos, especifique o caminho do atributo para AvailabilityZone e o código da zona de disponibilidade como valor. Por exemplo:

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

Para selecionar instâncias em uma sub-rede específica usando um filtro de recurso, especifique o caminho do atributo para SubnetId e o ID da sub-rede como o valor. Por exemplo:

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

Para selecionar instâncias que estão em um estado de instância específico, especifique o caminho do atributo para Name e um dos seguintes nomes de estado como o valor: pending | running | shutting-down | terminated | stopping |stopped. Por exemplo:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Exemplo: RDS cluster Amazon (cluster de banco de dados)

Quando você especifica um filtro para uma ação que oferece suporte ao tipo de recurso aws:rds:cluster, AWS FISexecuta o RDS describe-db-clusters comando da Amazon e aplica o filtro para identificar os alvos.

O describe-db-clusters comando retorna uma JSON saída semelhante à seguinte para cada cluster de banco de dados. A seguir está uma saída parcial que inclui campos marcados com italics. Forneceremos exemplos que usam esses campos para especificar um caminho de atributo a partir da estrutura da JSON saída.

[ { "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 um filtro de recursos que retorna somente os clusters de banco de dados que usam um mecanismo de banco de dados específico, especifique o caminho do atributo para Engine e o valor como aurora-postgresql conforme mostrado no exemplo a seguir.

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

Para aplicar um filtro de recurso que retorna apenas os clusters de banco de dados em uma zona de disponibilidade específica, especifique o caminho do atributo e o valor conforme mostrado no exemplo a seguir.

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