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á.
Exemplo AWS Modelos de experimentos FIS
Se você estiver usando a API AWS FIS ou uma ferramenta de linha de comando para criar um modelo de experimento, poderá criar o modelo em JavaScript Object Notation (JSON). Para obter mais informações sobre os componentes de um modelo de experimento, consulte AWS Componentes do modelo de experimento FIS.
Para criar um experimento usando um dos modelos de exemplo, salve-o em um arquivo JSON (por exemplo,my-template.json), substitua os valores do espaço reservado por seus próprios valores e execute o seguinte comando https://docs.aws.amazon.com/cli/latest/reference/fis/create-experiment-template.html create-experiment-template. italics
aws fis create-experiment-template --cli-input-json file://my-template.json
Exemplos de modelos do
Pare as instâncias do EC2 com base em filtros
O exemplo a seguir interrompe todas as instâncias do Amazon EC2 em execução na região especificada com a tag especificada na VPC especificada. Ele as reinicia após dois minutos.
{ "tags": { "Name": "StopEC2InstancesWithFilters" }, "description": "Stop and restart all instances in us-east-1b with the tag env=prod in the specified VPC", "targets": { "myInstances": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "Placement.AvailabilityZone", "values": ["us-east-1b"] }, { "path": "State.Name", "values": ["running"] }, { "path": "VpcId", "values": [ "vpc-aabbcc11223344556"] } ], "selectionMode": "ALL" } }, "actions": { "StopInstances": { "actionId": "aws:ec2:stop-instances", "description": "stop the instances", "parameters": { "startInstancesAfterDuration": "PT2M" }, "targets": { "Instances": "myInstances" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name" }
Interromper um número especificado de instâncias do EC2
O exemplo a seguir interrompe três instâncias com a tag especificada. AWS O FIS seleciona as instâncias específicas para serem interrompidas aleatoriamente. Ele reinicia essas instâncias após dois minutos.
{ "tags": { "Name": "StopEC2InstancesByCount" }, "description": "Stop and restart three instances with the specified tag", "targets": { "myInstances": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "selectionMode": "COUNT(3)" } }, "actions": { "StopInstances": { "actionId": "aws:ec2:stop-instances", "description": "stop the instances", "parameters": { "startInstancesAfterDuration": "PT2M" }, "targets": { "Instances": "myInstances" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name" }
Execute um pré-configurado AWS Documento FIS SSM
O exemplo a seguir executa uma injeção de falha de CPU por 60 segundos na instância EC2 especificada usando um documento AWS FIS SSM pré-configurado,. AWSFIS-Run-CPU-Stress AWS O FIS monitora o experimento por dois minutos.
{ "tags": { "Name": "CPUStress" }, "description": "Run a CPU fault injection on the specified instance", "targets": { "myInstance": { "resourceType": "aws:ec2:instance", "resourceArns": ["arn:aws:ec2:us-east-1:111122223333:instance/instance-id"], "selectionMode": "ALL" } }, "actions": { "CPUStress": { "actionId": "aws:ssm:send-command", "description": "run cpu stress using ssm", "parameters": { "duration": "PT2M", "documentArn": "arn:aws:ssm:us-east-1::document/AWSFIS-Run-CPU-Stress", "documentParameters": "{\"DurationSeconds\": \"60\", \"InstallDependencies\": \"True\", \"CPU\": \"0\"}" }, "targets": { "Instances": "myInstance" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name" }
Executar um runbook predefinido de automação
O exemplo a seguir publica uma notificação para o Amazon SNS usando um runbook fornecido pelo Systems Manager,. AWS-PublishSNSNotification A função deve ter permissões para publicar notificações no tópico do SNS especificado.
{ "description": "Publish event through SNS", "stopConditions": [ { "source": "none" } ], "targets": { }, "actions": { "sendToSns": { "actionId": "aws:ssm:start-automation-execution", "description": "Publish message to SNS", "parameters": { "documentArn": "arn:aws:ssm:us-east-1::document/AWS-PublishSNSNotification", "documentParameters": "{\"Message\": \"Hello, world\", \"TopicArn\": \"arn:aws:sns:us-east-1:111122223333:topic-name\"}", "maxDuration": "PT1M" }, "targets": { } } }, "roleArn": "arn:aws:iam::111122223333:role/role-name" }
Limitar as ações da API em instâncias do EC2 com a função IAM de destino.
O exemplo a seguir controla a utilização de 100% das chamadas de API especificadas na definição da ação para chamadas de API feitas pelos perfis do IAM especificados na definição de destinos.
nota
Se você quiser atingir instâncias do EC2 que são membros de um grupo do Auto Scaling, use a ação aws:ec2:asg-insufficient-instance-capacity-error e defina o grupo do Auto Scaling como destino. Para obter mais informações, consulte aws:ec2:asg-insufficient-instance-capacity-error.
{ "tags": { "Name": "ThrottleEC2APIActions" }, "description": "Throttle the specified EC2 API actions on the specified IAM role", "targets": { "myRole": { "resourceType": "aws:iam:role", "resourceArns": ["arn:aws:iam::111122223333:role/role-name"], "selectionMode": "ALL" } }, "actions": { "ThrottleAPI": { "actionId": "aws:fis:inject-api-throttle-error", "description": "Throttle APIs for 5 minutes", "parameters": { "service": "ec2", "operations": "DescribeInstances,DescribeVolumes", "percentage": "100", "duration": "PT2M" }, "targets": { "Roles": "myRole" } } }, "stopConditions": [ { "source": "aws:cloudwatch:alarm", "value": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name" }
Teste de estresse da CPU de pods em um cluster do Kubernetes
O exemplo a seguir usa o Chaos Mesh para testar o estresse da CPU de pods em um cluster do Amazon EKS Kubernetes por um minuto.
{ "description": "ChaosMesh StressChaos example", "targets": { "Cluster-Target-1": { "resourceType": "aws:eks:cluster", "resourceArns": [ "arn:aws:eks:arn:aws::111122223333:cluster/cluster-id" ], "selectionMode": "ALL" } }, "actions": { "TestCPUStress": { "actionId": "aws:eks:inject-kubernetes-custom-resource", "parameters": { "maxDuration": "PT2M", "kubernetesApiVersion": "chaos-mesh.org/v1alpha1", "kubernetesKind": "StressChaos", "kubernetesNamespace": "default", "kubernetesSpec": "{\"selector\":{\"namespaces\":[\"default\"],\"labelSelectors\":{\"run\":\"nginx\"}},\"mode\":\"all\",\"stressors\": {\"cpu\":{\"workers\":1,\"load\":50}},\"duration\":\"1m\"}" }, "targets": { "Cluster": "Cluster-Target-1" } } }, "stopConditions": [{ "source": "none" }], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {} }
O exemplo a seguir utiliza o Litmus para realizar um teste de estresse na CPU de pods em um cluster do Kubernetes do Amazon EKS por um minuto.
{ "description": "Litmus CPU Hog", "targets": { "MyCluster": { "resourceType": "aws:eks:cluster", "resourceArns": [ "arn:aws:eks:arn:aws::111122223333:cluster/cluster-id" ], "selectionMode": "ALL" } }, "actions": { "MyAction": { "actionId": "aws:eks:inject-kubernetes-custom-resource", "parameters": { "maxDuration": "PT2M", "kubernetesApiVersion": "litmuschaos.io/v1alpha1", "kubernetesKind": "ChaosEngine", "kubernetesNamespace": "litmus", "kubernetesSpec": "{\"engineState\":\"active\",\"appinfo\":{\"appns\":\"default\",\"applabel\":\"run=nginx\",\"appkind\":\"deployment\"},\"chaosServiceAccount\":\"litmus-admin\",\"experiments\":[{\"name\":\"pod-cpu-hog\",\"spec\":{\"components\":{\"env\":[{\"name\":\"TOTAL_CHAOS_DURATION\",\"value\":\"60\"},{\"name\":\"CPU_CORES\",\"value\":\"1\"},{\"name\":\"PODS_AFFECTED_PERC\",\"value\":\"100\"},{\"name\":\"CONTAINER_RUNTIME\",\"value\":\"docker\"},{\"name\":\"SOCKET_PATH\",\"value\":\"/var/run/docker.sock\"}]},\"probe\":[]}}],\"annotationCheck\":\"false\"}" }, "targets": { "Cluster": "MyCluster" } } }, "stopConditions": [{ "source": "none" }], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {} }
Exceção de taxa de transferência provisionada para um número especificado de Kinesis Data Streams
O exemplo a seguir gera uma exceção de taxa de transferência provisionada para 100% das solicitações de até cinco Kinesis Data Streams com a tag especificada. AWS O FIS seleciona os fluxos a serem afetados aleatoriamente. Após 5 minutos, a falha é removida.
{ "description": "Kinesis stream experiment", "targets": { "KinesisStreams-Target-1": { "resourceType": "aws:kinesis:stream", "resourceTags": { "tag-key": "tag-value" }, "selectionMode": "COUNT(5)" } }, "actions": { "kinesis": { "actionId": "aws:kinesis:stream-provisioned-throughput-exception", "description": "my-stream", "parameters": { "duration": "PT5M", "percentage": "100", "service": "kinesis" }, "targets": { "KinesisStreams": "KinesisStreams-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {}, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "fail" } }
Exemplo de permissões do perfil do experimento
A permissão a seguir permite que você execute as aws:kinesis:stream-expired-iterator-exception ações aws:kinesis:stream-provisioned-throughput-exception e em um fluxo específico que afeta 50% das solicitações.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:InjectApiError", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kinesis:FisActionId": [ "aws:kinesis:stream-provisioned-throughput-exception", "aws:kinesis:stream-expired-iterator-exception" ], "kinesis:FisTargetArns": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream-name" ] }, "NumericEquals": { "kinesis:FisInjectPercentage": "50" } } }, { "Action": [ "kinesis:DescribeStreamSummary" ], "Resource": "*", "Effect": "Allow" } ] }