Cross-Region: Connectivity - AWS Service d'injection de défauts

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Cross-Region: Connectivity

Vous pouvez utiliser le plugin Cross-Region: Connectivity scénario visant à bloquer le trafic réseau de l'application entre la région d'essai et la région de destination et à suspendre la réplication entre régions pour Amazon S3 et Amazon DynamoDB. Interrégional : la connectivité affecte le trafic applicatif sortant de la région dans laquelle vous exécutez le test (région d'essai). Le trafic entrant apatride en provenance de la région que vous souhaitez isoler de la région de test (région de destination) peut ne pas être bloqué. Le trafic provenant des services AWS gérés ne doit pas être bloqué.

Ce scénario peut être utilisé pour démontrer que les applications multirégionales fonctionnent comme prévu lorsque les ressources de la région de destination ne sont pas accessibles depuis la région d'expérimentation. Cela inclut le blocage du trafic réseau entre la région expérimentale et la région de destination en ciblant les passerelles de transit et les tables de routage. Il interrompt également la réplication entre régions pour S3 et DynamoDB. Par défaut, les actions pour lesquelles aucune cible n'a été trouvée seront ignorées.

Actions

Ensemble, les actions suivantes bloquent la connectivité interrégionale pour les AWS services inclus. Les actions sont exécutées en parallèle. Par défaut, le scénario bloque le trafic pendant 3 heures, que vous pouvez augmenter jusqu'à une durée maximale de 12 heures.

Perturber la connectivité de Transit Gateway

Cross Region: Connectivity inclut aws:network : transit-gateway-disrupt-cross -region-connectivity pour bloquer le trafic réseau interrégional entre la région d'VPCsessai et la région de destination connectée par une passerelle de transit. VPCs Cela n'affecte pas l'accès aux VPC points de terminaison dans la région d'essai, mais bloquera le trafic en provenance de la région d'essai destiné à un VPC point de terminaison dans la région de destination.

Cette action cible les passerelles de transit reliant la région expérimentale à la région de destination. Par défaut, il cible les passerelles de transit avec une balise nommée DisruptTransitGateway avec une valeur deAllowed. Vous pouvez ajouter cette balise à vos passerelles de transport en commun ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucune passerelle de transit valide n'est trouvée, cette action sera ignorée.

Interrompre la connectivité des sous-réseaux

Cross Region: Connectivity inclut aws:network : route-table-disrupt-cross -region-connectivity pour bloquer le trafic réseau interrégional depuis la région d'essai vers VPCs les blocs AWS IP publics de la région de destination. Ces blocs IP publics incluent les points de terminaison de AWS service dans la région de destination, par exemple le point de terminaison régional S3, et les blocs AWS IP pour les services gérés, par exemple les adresses IP utilisées pour les équilibreurs de charge et Amazon API Gateway. Cette action bloque également la connectivité réseau via les connexions de VPC peering interrégionales entre la région d'essai et la région de destination. Cela n'affecte pas l'accès aux VPC points de terminaison dans la région d'essai, mais bloquera le trafic en provenance de la région d'essai destiné à un VPC point de terminaison dans la région de destination.

Cette action cible les sous-réseaux de la région d'expérimentation. Par défaut, il cible les sous-réseaux dotés d'une balise nommée DisruptSubnet avec une valeur deAllowed. Vous pouvez ajouter cette balise à vos sous-réseaux ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucun sous-réseau valide n'est trouvé, cette action sera ignorée.

Suspendre la réplication S3

Cross Region: Connectivity inclut aws:s3 : bucket-pause-replication pour suspendre la réplication S3 de la région d'expérience vers la région de destination pour les buckets ciblés. La réplication de la région de destination vers la région d'expérimentation ne sera pas affectée. Une fois le scénario terminé, la réplication des compartiments reprendra à partir du point où elle avait été interrompue. Notez que le temps nécessaire à la réplication pour synchroniser tous les objets varie en fonction de la durée de l'expérience et du taux de chargement des objets vers le compartiment.

Cette action cible les compartiments S3 de la région d'expérience avec la réplication entre régions (CRR) activée vers un compartiment S3 de la région de destination. Par défaut, il cible les compartiments dotés d'une balise nommée DisruptS3 avec une valeur deAllowed. Vous pouvez ajouter cette balise à vos compartiments ou remplacer la balise par défaut par la vôtre dans le modèle d'expérience. Par défaut, si aucun compartiment valide n'est trouvé, cette action sera ignorée.

Suspendre la réplication DynamoDB

Cross-Region: Connectivity inclut aws:dynamodb : global-table-pause-replication pour suspendre la réplication entre la région expérimentale et toutes les autres régions, y compris la région de destination. Cela empêche la réplication vers et hors de la région d'expérience, mais n'affecte pas la réplication entre les autres régions. Une fois le scénario terminé, la réplication des tables reprendra à partir du point où elle avait été interrompue. Notez que le temps nécessaire à la réplication pour synchroniser toutes les données varie en fonction de la durée de l'expérience et du taux de modifications apportées à la table.

Cette action cible les tables globales DynamoDB de la région d'expérimentation. Par défaut, il cible les tables dotées d'une balise nommée DisruptDynamoDb avec une valeur deAllowed. Vous pouvez ajouter cette balise à vos tableaux ou remplacer la balise par défaut par votre propre balise dans le modèle d'expérience. Par défaut, si aucune table globale valide n'est trouvée, cette action sera ignorée.

Limites

  • Ce scénario n'inclut pas les conditions d'arrêt. Les conditions d'arrêt correctes pour votre application doivent être ajoutées au modèle d'expérience.

Prérequis

  • Ajoutez l'autorisation requise au rôle AWS FIS d'expérience.

  • Les balises de ressources doivent être appliquées aux ressources qui doivent être ciblées par l'expérience. Ils peuvent utiliser votre propre convention de balisage ou les balises par défaut définies dans le scénario.

Autorisations

La politique suivante accorde AWS FIS les autorisations nécessaires pour exécuter une expérience avec le Cross-Region: Connectivity scénario. Cette politique doit être associée au rôle d'expérimentation.

{ "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/*" } ] }

Contenu du scénario

Le contenu suivant définit le scénario. Cela JSON peut être enregistré et utilisé pour créer un modèle d'expérience à l'aide de la create-experiment-templatecommande depuis l'interface de ligne de AWS commande (AWSCLI). Pour obtenir la version la plus récente du scénario, consultez la bibliothèque de scénarios de la FIS console.

{ "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" }