Metas para o 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 o AWS FIS

Um alvo é um ou mais AWS recursos nos quais uma ação é executada pelo AWS AWS Fault Injection Service (FIS) durante um experimento. Os destinos podem estar na mesma conta da AWS 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 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 O FIS identifica todos os alvos no início do experimento, antes de iniciar qualquer uma das ações no conjunto de ações. AWS O FIS usa os recursos-alvo que 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

O nome do recurso da Amazon (ARN) dos 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 ação AWS do FIS é executada em um tipo de AWS recurso específico. 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 compatíveis com o AWS FIS:

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

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

  • aws:ec2:ebs-volume – Um volume do Amazon EBS

  • aws:ec2:instance – Uma instância do Amazon EC2

  • aws:ec2:spot-instance – Uma instância spot do Amazon EC2

  • aws:ec2:subnet – Uma sub-rede do Amazon VPC

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

  • aws:ecs:cluster – Um cluster do Amazon ECS

  • aws:ecs:task – Uma tarefa do Amazon ECS

  • aws:eks:cluster – Um cluster do Amazon EKS

  • aws:eks:nodegroup – Um grupo de nós do Amazon EKS

  • aws:eks:pod – Um pod do Kubernetes

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

  • aws:iam:role — um perfil do IAM

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

  • aws:rds:db – Uma instância do Amazon RDS DB

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

Identificar recursos de destino

Ao definir um alvo no console do AWS FIS, você pode escolher AWS recursos específicos (de um tipo de recurso específico) para segmentar. Ou você pode permitir que o AWS FIS identifique um grupo de recursos com base nos critérios que você fornece.

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

  • IDs de recursos — Os IDs de AWS recursos específicos. Todos os IDs de recursos devem representar o mesmo tipo de recurso.

  • Tags de recursos — As tags aplicadas a AWS recursos específicos.

  • Filtros de recursos – O caminho e os valores que representam recursos com atributos específicos. Para ter 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 ter 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 O FIS aplica a consulta à saída de uma ação de API 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 ações e AWS CLI os comandos da API que você pode usar para obter as descrições canônicas de cada tipo de recurso. AWS O FIS executa 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 – A VPC que contém as sub-redes de destino. Não é permitido mais de uma 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: opcional. 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 o ARN do cluster do EKS 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: opcional. 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: opcional. 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: opcional. 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 O FIS suporta 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 destinos 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 destinos identificados.

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

Se você definir vários alvos usando o mesmo tipo de recurso de destino, o AWS FIS poderá 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 na VPC especificada com as tags especificadas

Os destinos possíveis para este exemplo são instâncias do Amazon EC2 na VPC especificada com a tag env=prod. O modo de seleção especifica que o AWS FIS escolha 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 destinos possíveis para este exemplo são tarefas do Amazon ECS com o cluster e o serviço especificados. O modo de seleção especifica que o AWS FIS escolha 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: instâncias do EC2

Quando você especifica um filtro para uma ação que suporta o tipo de recurso aws:ec2:instance, AWS o FIS usa o describe-instances comando Amazon EC2 e aplica o filtro para identificar os destinos.

O comando describe-instances retorna a saída JSON em que cada instância é uma estrutura do Instances. A seguir está uma saída parcial que inclui campos marcados com itálico. Forneceremos exemplos que usam esses campos para especificar um caminho de atributo a partir da estrutura da saída 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 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: cluster Amazon RDS (cluster do banco de dados)

Quando você especifica um filtro para uma ação que suporta o tipo de recurso aws:rds:cluster, o FIS AWS executa o describe-db-clusters comando Amazon RDS e aplica o filtro para identificar os destinos.

O comando describe-db-clusters retorna uma saída JSON semelhante à seguinte para cada cluster de banco de dados. A seguir está uma saída parcial que inclui campos marcados com itálico. Forneceremos exemplos que usam esses campos para especificar um caminho de atributo a partir da estrutura da saída 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 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" ] } ],