Cross-Region: Connectivity - 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á.

Cross-Region: Connectivity

Você pode usar o cenário Cross-Region: Connectivity para bloquear o tráfego de rede de aplicações da região do experimento para a região de destino e pausar a replicação entre regiões para o Amazon S3 e o Amazon DynamoDB. Região cruzada: a conectividade afeta o tráfego de saída da aplicação da região na qual você executa o experimento (região do experimento). O tráfego de entrada sem estado da região que você deseja isolar da região do experimento (região de destino) pode não estar bloqueado. O tráfego dos serviços gerenciados da AWS pode não estar bloqueado.

Esse cenário pode ser usado para demonstrar que as aplicações multirregionais operam conforme o esperado quando os recursos na região de destino não estão acessíveis pela região do experimento. Isso inclui bloquear o tráfego de rede da região do experimento para a região de destino, visando gateways de trânsito e tabelas de rotas. Isso também pausa a replicação entre regiões do S3 e do DynamoDB. Por padrão, as ações para as quais nenhum destino foi encontrado serão ignoradas.

Ações

Juntas, as ações a seguir bloqueiam a conectividade entre regiões para os serviços da AWS incluídos. As ações são executadas em paralelo. Por padrão, o cenário bloqueia o tráfego por três horas, o que você pode aumentar até uma duração máxima de 12 horas.

Interrupção da conectividade do gateway de trânsito

Cross Region: Connectivity inclui aws:network:transit-gateway-disrupt-cross-region-connectivity para bloquear o tráfego de rede entre regiões de VPCs na região do experimento para VPCs na região de destino conectadas por um gateway de trânsito. Isso não afeta o acesso aos endpoints da VPC na região do experimento, mas bloqueará o tráfego da região do experimento destinado a um endpoint da VPC na região de destino.

Essa ação é voltada aos gateways de trânsito que conectam a região do experimento e a região de destino. Por padrão, ela é voltada para gateways de trânsito com uma tag chamada DisruptTransitGateway com um valor de Allowed. Você pode adicionar essa tag aos gateways de trânsito ou substituir a tag padrão pela sua própria tag no modelo do experimento. Por padrão, se nenhum gateway de trânsito válido for encontrado, essa ação será ignorada.

Interromper a conectividade da sub-rede

Cross Region: Connectivity inclui aws:network:route-table-disrupt-cross-region-connectivity para bloquear o tráfego de rede entre regiões de VPCs na região do experimento para blocos de IP público da AWS na região de destino. Esses blocos de IP público incluem endpoints de serviço da AWS na região de destino, por exemplo, o endpoint regional do S3, e blocos de IP da AWS para serviços gerenciados, por exemplo, os endereços IP usados para balanceadores de carga e o Amazon API Gateway. Essa ação também bloqueia a conectividade de rede em conexões de emparelhamento de VPC entre regiões da região do experimento até a região de destino. Isso não afeta o acesso aos endpoints da VPC na região do experimento, mas bloqueará o tráfego da região do experimento destinado a um endpoint da VPC na região de destino.

Essa ação é voltada para sub-redes na região do experimento. Por padrão, ela é voltada para sub-redes com uma tag chamada DisruptSubnet com um valor de Allowed. Você pode adicionar essa tag às sub-redes ou substituir a tag padrão pela sua própria tag no modelo de experimento. Por padrão, se nenhuma sub-rede válida for encontrada, essa ação será ignorada.

Pausar a replicação do S3

Cross Region: Connectivity inclui aws:s3:bucket-pause-replication para pausar a replicação do S3 da região do experimento para a região de destino dos buckets-alvo. A replicação da região de destino para a região do experimento não será afetada. Depois que o cenário terminar, a replicação do bucket será retomada a partir do ponto em que foi pausada. Observe que o tempo necessário para a replicação manter todos os objetos sincronizados variará com base na duração do experimento e na taxa de upload do objeto para o bucket.

Essa ação é voltada para os buckets do S3 na região do experimento com a replicação entre regiões (CRR) habilitada para um bucket do S3 na região de destino. Por padrão, ela é voltada para buckets com uma tag chamada DisruptS3 com um valor de Allowed. Você pode adicionar essa tag aos buckets ou substituir a tag padrão pela sua própria tag no modelo de experimento. Por padrão, se nenhum bucket válido for encontrado, essa ação será ignorada.

Pausar a replicação do DynamoDB

Cross-Region: Connectivityinclui aws:dynamodb:global-table-pause-replication para pausar a replicação entre a região do experimento e todas as outras regiões, incluindo a região de destino. Isso evita a replicação para dentro e para fora da região do experimento, mas não afeta a replicação entre outras regiões. Depois que o cenário terminar, a replicação da tabela será retomada a partir do ponto em que foi pausada. Observe que o tempo necessário para a replicação manter todos os dados sincronizados variará com base na duração do experimento e na taxa de alterações na tabela.

Essa ação tem como alvo as tabelas globais do DynamoDB na região do experimento. Por padrão, ela é voltada para tabelas com uma tag chamada DisruptDynamoDb com um valor de Allowed. Você pode adicionar essa tag às tabelas ou substituir a tag padrão pela sua própria tag no modelo de experimento. Por padrão, se nenhuma tabela global válida for encontrada, essa ação será ignorada.

Limitações

  • Esse cenário não inclui condições de interrupção. As condições de interrupção corretas para a aplicação devem ser adicionadas ao modelo de experimento.

Requisitos

  • Adicione a permissão necessária ao perfil do experimento do AWS FIS.

  • As tags de recursos devem ser aplicadas aos recursos que serão alvo do experimento. Eles podem usar sua própria convenção de marcação ou as tags-padrão definidas no cenário.

Permissões

A política a seguir concede ao AWS FIS as permissões necessárias para executar um experimento com o cenário Cross-Region: Connectivity. Essa política deve ser anexada ao perfil do experimento.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RouteTableDisruptConnectivity1", "Effect": "Allow", "Action": "ec2:CreateRouteTable", "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity2", "Effect": "Allow", "Action": "ec2:CreateRouteTable", "Resource": "arn:aws:ec2:*:*:vpc/*" }, { "Sid": "RouteTableDisruptConnectivity21", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateRouteTable", "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity3", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface", "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity4", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:prefix-list/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateManagedPrefixList", "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity5", "Effect": "Allow", "Action": "ec2:DeleteRouteTable", "Resource": [ "arn:aws:ec2:*:*:route-table/*", "arn:aws:ec2:*:*:vpc/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity6", "Effect": "Allow", "Action": "ec2:CreateRoute", "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity7", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity8", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "RouteTableDisruptConnectivity9", "Effect": "Allow", "Action": "ec2:DeleteNetworkInterface", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity10", "Effect": "Allow", "Action": "ec2:CreateManagedPrefixList", "Resource": "arn:aws:ec2:*:*:prefix-list/*", "Condition": { "StringEquals": { "aws:RequestTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity11", "Effect": "Allow", "Action": "ec2:DeleteManagedPrefixList", "Resource": "arn:aws:ec2:*:*:prefix-list/*", "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity12", "Effect": "Allow", "Action": "ec2:ModifyManagedPrefixList", "Resource": "arn:aws:ec2:*:*:prefix-list/*", "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity13", "Effect": "Allow", "Action": [ "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeManagedPrefixLists", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "ec2:DescribeVpcEndpoints" ], "Resource": "*" }, { "Sid": "RouteTableDisruptConnectivity14", "Effect": "Allow", "Action": "ec2:ReplaceRouteTableAssociation", "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:route-table/*" ] }, { "Sid": "RouteTableDisruptConnectivity15", "Effect": "Allow", "Action": "ec2:GetManagedPrefixListEntries", "Resource": "arn:aws:ec2:*:*:prefix-list/*" }, { "Sid": "RouteTableDisruptConnectivity16", "Effect": "Allow", "Action": "ec2:AssociateRouteTable", "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:route-table/*" ] }, { "Sid": "RouteTableDisruptConnectivity17", "Effect": "Allow", "Action": "ec2:DisassociateRouteTable", "Resource": [ "arn:aws:ec2:*:*:route-table/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity18", "Effect": "Allow", "Action": "ec2:DisassociateRouteTable", "Resource": [ "arn:aws:ec2:*:*:subnet/*" ] }, { "Sid": "RouteTableDisruptConnectivity19", "Effect": "Allow", "Action": "ec2:ModifyVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:route-table/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/managedByFIS": "true" } } }, { "Sid": "RouteTableDisruptConnectivity20", "Effect": "Allow", "Action": "ec2:ModifyVpcEndpoint", "Resource": [ "arn:aws:ec2:*:*:vpc-endpoint/*" ] }, { "Sid": "TransitGatewayDisruptConnectivity1", "Effect": "Allow", "Action": [ "ec2:DisassociateTransitGatewayRouteTable", "ec2:AssociateTransitGatewayRouteTable" ], "Resource": [ "arn:aws:ec2:*:*:transit-gateway-route-table/*", "arn:aws:ec2:*:*:transit-gateway-attachment/*" ] }, { "Sid": "TransitGatewayDisruptConnectivity2", "Effect": "Allow", "Action": [ "ec2:DescribeTransitGatewayPeeringAttachments", "ec2:DescribeTransitGatewayAttachments", "ec2:DescribeTransitGateways" ], "Resource": "*" }, { "Sid": "S3CrossRegion1", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "*" }, { "Sid": "S3CrossRegion2", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" }, { "Sid": "S3CrossRegion3", "Effect": "Allow", "Action": [ "s3:PauseReplication" ], "Resource": "arn:aws:s3:::*", "Condition": { "StringLike": { "s3:DestinationRegion": "*" } } }, { "Sid": "S3CrossRegion4", "Effect": "Allow", "Action": [ "s3:GetReplicationConfiguration", "s3:PutReplicationConfiguration" ], "Resource": "arn:aws:s3:::*", "Condition": { "BoolIfExists": { "s3:isReplicationPauseRequest": "true" } } }, { "Sid": "DdbCrossRegion1", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" }, { "Sid": "DdbCrossRegion2", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:DescribeGlobalTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*", "arn:aws:dynamodb:*:*:global-table/*" ] }, { "Sid": "DdbCrossRegion3", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GetKeyPolicy", "kms:PutKeyPolicy" ], "Resource": "arn:aws:kms:*:*:key/*" } ] }

Conteúdo do cenário

O conteúdo a seguir define o cenário. Esse JSON pode ser salvo e usado para criar um modelo de experimento usando o comando create-experiment-template da AWS Command Line Interface (AWS CLI). A versão mais recente do cenário está disponível na biblioteca de cenários no console do FIS.

{ "targets": { "Transit-Gateway": { "resourceType": "aws:ec2:transit-gateway", "resourceTags": { "TgwTag": "TgwValue" }, "selectionMode": "ALL" }, "Subnet": { "resourceType": "aws:ec2:subnet", "resourceTags": { "SubnetKey": "SubnetValue" }, "selectionMode": "ALL", "parameters": {} }, "S3-Bucket": { "resourceType": "aws:s3:bucket", "resourceTags": { "S3Impact": "Allowed" }, "selectionMode": "ALL" }, "DynamoDB-Global-Table": { "resourceType": "aws:dynamodb:encrypted-global-table", "resourceTags": { "DisruptDynamoDb": "Allowed" }, "selectionMode": "ALL" } }, "actions": { "Disrupt-Transit-Gateway-Connectivity": { "actionId": "aws:network:transit-gateway-disrupt-cross-region-connectivity", "parameters": { "duration": "PT3H", "region": "eu-west-1" }, "targets": { "TransitGateways": "Transit-Gateway" } }, "Disrupt-Subnet-Connectivity": { "actionId": "aws:network:route-table-disrupt-cross-region-connectivity", "parameters": { "duration": "PT3H", "region": "eu-west-1" }, "targets": { "Subnets": "Subnet" } }, "Pause-S3-Replication": { "actionId": "aws:s3:bucket-pause-replication", "parameters": { "duration": "PT3H", "region": "eu-west-1" }, "targets": { "Buckets": "S3-Bucket" } }, "Pause-DynamoDB-Replication": { "actionId": "aws:dynamodb:encrypted-global-table-pause-replication", "parameters": { "duration": "PT3H" }, "targets": { "Tables": "DynamoDB-Global-Table" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "", "logConfiguration": { "logSchemaVersion": 2 }, "tags": { "Name": "Cross-Region: Connectivity" }, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "skip" }, "description": "Block application network traffic from experiment Region to target Region and pause cross-Region replication" }