AWS FIS 操作参考 - AWS 故障注入服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS FIS 操作参考

操作是您使用 AWS Fault Injection Service (AWS FIS) 在目标上运行的错误注入活动。 AWS FIS 为跨 AWS 服务的特定类型的目标提供预配置的操作。您可以为实验模板添加操作,然后使用此模板运行实验。

本参考描述了中的常见操作 AWS FIS,包括有关操作参数和所需IAM权限的信息。您也可以使用 AWS FIS 控制台或 AWS Command Line Interface ()AWS CLI中的 list-actions 命令列出支持的 AWS FIS 操作。获得特定操作的名称后,即可使用 get- action 命令查看有关该操作的详细信息。有关在中使用 AWS FIS 命令的更多信息 AWS CLI,请参阅《AWS CLI 命令参考》中的《AWS Command Line Interface 用户指南》fis

有关 AWS FIS 操作工作原理的更多信息,请参阅的操作 AWS FISAWS 故障注入服务的工作原理 IAM

故障注入操作

AWS FIS 支持以下故障注入操作。

aws:fis:inject-api-internal-error

在目标IAM角色发出的请求中注入内部错误。具体的响应取决于每项服务和API. 如需更多信息,请查看您的服务SDK及其API文档。

资源类型
  • aws:iam:role

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • service— 目标 AWS API命名空间。支持的值为 ec2

  • percentage:注入故障信息的调用百分比 (1 - 100)。

  • operations:注入故障信息的操作,用逗号分隔。有关ec2命名空间的API操作列表,请参阅 Amazon EC2 API 参考中的操作

权限
  • fis:InjectApiInternalError

aws:fis:inject-api-throttle-error

将限制错误注入目标角色发出的请求中。IAM具体的响应取决于每项服务和API. 如需更多信息,请查看您的服务SDK及其API文档。

资源类型
  • aws:iam:role

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • service— 目标 AWS API命名空间。支持的值为 ec2

  • percentage:注入故障信息的调用百分比 (1 - 100)。

  • operations:注入故障信息的操作,用逗号分隔。有关ec2命名空间的API操作列表,请参阅 Amazon EC2 API 参考中的操作

权限
  • fis:InjectApiThrottleError

aws:fis:inject-api-unavailable-error

在目标IAM角色发出的请求中注入不可用错误。具体的响应取决于每项服务和API. 如需更多信息,请查看您的服务SDK及其API文档。

资源类型
  • aws:iam:role

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • service— 目标 AWS API命名空间。支持的值为 ec2

  • percentage:注入故障信息的调用百分比 (1 - 100)。

  • operations:注入故障信息的操作,用逗号分隔。有关ec2命名空间的API操作列表,请参阅 Amazon EC2 API 参考中的操作

权限
  • fis:InjectApiUnavailableError

等待动作

AWS FIS 支持以下等待操作。

aws:fis:wait

运行 AWS FIS 等待操作。

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限

亚马逊的 CloudWatch 行动

AWS FIS 支持以下 Amazon CloudWatch 操作。

aws:cloudwatch:assert-alarm-state

验证指定警报是否处于指定警报状态之一。

资源类型
参数
  • alarmArns— 警报ARNs中的一个,用逗号分隔。您最多可以指定五个警报。

  • alarmStates:警报状态,用逗号分隔。警报状态可能是 OKALARMINSUFFICIENT_DATA

权限
  • cloudwatch:DescribeAlarms

Amazon DynamoDB 操作

AWS FIS 支持以下亚马逊 DynamoDB 操作。

aws:dynamodb:global-table-pause-replication

暂停向任何副本表的 Amazon DynamoDB 全局表复制。操作开始后,表可能会继续复制最多 5 分钟。

以下语句将动态附加到目标 DynamoDB 全局表的策略中:

{ "Statement":[ { "Sid": "DoNotModifyFisDynamoDbPauseReplicationEXPxxxxxxxxxxxxxxx" "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" }, "Action":[ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:DescribeTable", "dynamodb:UpdateTable", "dynamodb:Scan", "dynamodb:DescribeTimeToLive", "dynamodb:UpdateTimeToLive" ], "Resource":"arn:aws:dynamodb:us-east-1:123456789012:table/ExampleGlobalTable", "Condition": { "DateLessThan": { "aws:CurrentTime": "2024-04-10T09:51:41.511Z" } } } ] }

以下语句将动态附加到目标 DynamoDB 全局表的直播策略中:

{ "Statement":[ { "Sid": "DoNotModifyFisDynamoDbPauseReplicationEXPxxxxxxxxxxxxxxx" "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" }, "Action":[ "dynamodb:GetRecords", "dynamodb:DescribeStream", "dynamodb:GetShardIterator" ], "Resource":"arn:aws:dynamodb:us-east-1:123456789012:table/ExampleGlobalTable/stream/2023-08-31T09:50:24.025", "Condition": { "DateLessThan": { "aws:CurrentTime": "2024-04-10T09:51:41.511Z" } } ] }

如果目标表或流没有任何附加的资源策略,则会在实验期间创建资源策略,并在实验结束时自动删除。否则,错误语句将插入到现有策略中,而无需对现有策略语句进行任何其他修改。然后,在实验结束时,错误声明将从策略中删除。

资源类型
  • aws:dynamodb:global-table

参数
  • duration— 在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • dynamodb:PutResourcePolicy

  • dynamodb:DeleteResourcePolicy

  • dynamodb:GetResourcePolicy

  • dynamodb:DescribeTable

  • tag:GetResources

亚马逊的EBS行动

AWS FIS 支持以下 Amazon EBS 操作。

aws:ebs:pause-volume-io

暂停目标EBS卷上的 I/O 操作。目标卷必须位于同一可用区内,并且必须附加到构建在 Nitro 系统上的实例。此卷无法附加到 Outpost 上的实例。

要使用亚马逊EC2控制台启动实验,请参阅亚马逊EC2用户指南EBS中的亚马逊故障测试

资源类型
  • aws:ec2:ebs-volume

参数
  • duration:持续时间,从一秒到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M代表一分钟,PT5S代表五秒,PT6H代表六小时。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。如果持续时间很短,例如PT5S,I/O 将在指定的持续时间内暂停,但由于初始化实验需要时间,因此可能需要更长的时间才能完成实验。

权限
  • ec2:DescribeVolumes

  • ec2:PauseVolumeIO

  • tag:GetResources

亚马逊的EC2行动

AWS FIS 支持以下 Amazon EC2 操作。

AWS FIS 还支持通过 AWS Systems Manager SSM代理进行故障注入操作。Systems Manager 使用一个SSM文档来定义要对EC2实例执行的操作。您可以使用自己的文档来注入自定义错误,也可以使用预配置的SSM文档。有关更多信息,请参阅 将 Systems Manager SSM 文档与 AWS FIS

aws:ec2:api-insufficient-instance-capacity-error

对目标IAM角色发出的请求注入InsufficientInstanceCapacity错误响应。支持的操作是 RunInstances、、 CreateCapacityReservation StartInstances、 CreateFleet 调用。不支持包含在多个可用区中询问容量的请求。此操作不支持使用资源标签、筛选条件或参数定义目标。

资源类型
  • aws:iam:role

参数
  • duration— 在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • availabilityZoneIdentifiers:以逗号分隔的可用区列表。支持区域IDs(例如"use1-az1, use1-az2")和区域名称(例如"us-east-1a")。

  • percentage:注入故障信息的调用百分比 (1 - 100)。

权限
  • ec2:InjectApiError条件键ec2:FisActionId值设置为aws:ec2:api-insufficient-instance-capacity-errorec2:FisTargetArns条件键设置为目标IAM角色。

有关策略示例,请参阅示例:使用 ec2:InjectApiError 条件键

aws:ec2:asg-insufficient-instance-capacity-error

对目标自动扩缩组发出的请求注入 InsufficientInstanceCapacity 错误响应。此操作仅支持使用启动模板的自动扩缩组。要了解有关实例容量不足错误的更多信息,请参阅 Amazon EC2 用户指南

资源类型
  • aws:ec2:autoscaling-group

参数
  • duration— 在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • availabilityZoneIdentifiers:以逗号分隔的可用区列表。支持区域IDs(例如"use1-az1, use1-az2")和区域名称(例如"us-east-1a")。

  • percentage – 可选。目标自动扩缩组的启动请求中注入故障的百分比(1-100)。默认值为 100。

权限
  • ec2:InjectApiError条件键 ec2: FisActionId 值设置为,aws:ec2:asg-insufficient-instance-capacity-errorec2:FisTargetArns条件键设置为目标 Auto Scaling 组。

  • autoscaling:DescribeAutoScalingGroups

有关策略示例,请参阅示例:使用 ec2:InjectApiError 条件键

aws:ec2:reboot-instances

对目标EC2实例运行 Amaz RebootInstanceson EC2 API 操作。

资源类型
  • aws:ec2:instance

参数
权限
  • ec2:RebootInstances

  • ec2:DescribeInstances

aws:ec2:send-spot-instance-interruptions

中断目标竞价型实例。在中断前两分钟,向目标竞价型实例发送竞价型实例中断通知。中断时间由指定的durationBeforeInterruption参数确定。在中断后两分钟,竞价型实例会终止或停止,具体取决于中断行为。由 AWS FIS 停止的竞价型实例会一直保持停止状态,直至重启。

操作启动后,目标实例会立即收到EC2实例再平衡建议。如果您指定 durationBeforeInterruption,则在再平衡建议和中断通知之间可能会有延迟。

有关更多信息,请参阅 教程:使用测试点实例中断 AWS FIS。或者,要使用亚马逊EC2控制台启动实验,请参阅亚马逊EC2用户指南中的启动竞价型实例中断

资源类型
  • aws:ec2:spot-instance

参数
  • durationBeforeInterruption:中断实例前的等待时间,从 2 到 15 分钟不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT2M表示两分钟。在 AWS FIS 控制台中,您可以输入分钟数。

权限
  • ec2:SendSpotInstanceInterruptions

  • ec2:DescribeInstances

aws:ec2:stop-instances

对目标EC2实例运行 Amaz StopInstanceson EC2 API 操作。

资源类型
  • aws:ec2:instance

参数
  • startInstancesAfterDuration – 可选。启动实例前的等待时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。您可以在 AWS FIS 控制台中输入秒数、分钟数或小时数。如果实例具有加密EBS卷,则必须向用于加密卷的KMS密钥授予 AWS FIS 权限,或者将实验角色添加到KMS密钥策略中。

  • completeIfInstancesTerminated – 可选。如果为 true,如果也startInstancesAfterDuration为 true,则当目标EC2实例已被外部的单独请求终止FIS并且无法重新启动时,此操作不会失败。例如,Auto Scaling 组可以在此操作完成之前终止其控制下的已停止EC2实例。默认值为 false。

权限
  • ec2:StopInstances

  • ec2:StartInstances

  • ec2:DescribeInstances – 可选。需要使用 “completeIfInstances已终止” 来验证操作结束时的实例状态。

  • kms:CreateGrant – 可选。需要使用startInstancesAfter持续时间来重启带有加密卷的实例。

aws:ec2:terminate-instances

对目标EC2实例运行 Amaz TerminateInstanceson EC2 API 操作。

资源类型
  • aws:ec2:instance

参数
权限
  • ec2:TerminateInstances

  • ec2:DescribeInstances

亚马逊的ECS行动

AWS FIS 支持以下 Amazon ECS 操作。

aws:ecs:drain-container-instances

运行 Amazon ECS API 操作UpdateContainerInstancesState以耗尽目标集群上指定百分比的底层 Amazon EC2 实例。

资源类型
  • aws:ecs:cluster

参数
  • drainagePercentage:百分比 (1 - 100)。

  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • ecs:DescribeClusters

  • ecs:UpdateContainerInstancesState

  • ecs:ListContainerInstances

  • tag:GetResources

aws:ecs:stop-task

运行 Amazon ECS API 操作StopTask以停止目标任务。

资源类型
  • aws:ecs:task

参数
权限
  • ecs:DescribeTasks

  • ecs:ListTasks

  • ecs:StopTask

  • tag:GetResources

aws:ecs:task-cpu-stress

对目标任务运行 str CPU ess。使用 AWSFIS-Run-CPU-SSM Stres s 文档。任务必须由管理 AWS Systems Manager。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • duration— 压力测试的持续时间,格式ISO为 8601。

  • percent – 可选。目标负载百分比,从 0(空载)到 100(满载)不等。默认值为 100。

  • workers – 可选。要使用的压力源数量。默认为 0,使用所有压力源。

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项为 stress-ng

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ecs:task-io-stress

在目标任务上运行 I/O 压力测试。使用 AWSFIS-run-io-stress 文档SSM。任务必须由管理 AWS Systems Manager。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • duration— 压力测试的持续时间,格式ISO为 8601。

  • percent – 可选。在压力测试期间,文件系统上使用的空闲空间百分比。默认为 80%。

  • workers – 可选。工作程序数量。工作程序会混合执行读/写操作(顺序操作、随机操作和内存映射操作)、强制同步操作和缓存删除操作。多个子进程对同一个文件执行不同的 I/O 操作。默认 为 1。

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项为 stress-ng

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ecs:task-kill-process

运行 killall 命令,停止任务中的指定进程。使用 AWSFIS-Run-Kill-Process 文档SSM。必须在任务定义中将 pidMode 设为 task。任务必须由管理 AWS Systems Manager。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • processName:待停止进程的名称。

  • signal – 可选。要与命令一起发送的信号。这些值可能是 SIGTERM(接收者可以忽略的值)和 SIGKILL(接收者不能忽略的值)。默认为 SIGTERM

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项为 killall

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ecs:task-network-blackhole-port

丢弃指定协议和端口的入站或出站流量。使用 AWSFIS-Run-Network-Blackhole-Port 文档SSM。必须在任务定义中将 pidMode 设为 task。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode 设为 bridge。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • port:端口号。

  • trafficType:流量类型。可能的值为 ingressegress

  • protocol – 可选。协议。可能的值为 tcpudp。默认为 tcp

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项分别是 atddigiptables

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ecs:task-network-latency

使用该tc工具为特定来源的出口流量增加网络接口的延迟和抖动。使用 AWSFIS-Run-Network-Latency-Sources SSM 文档。必须在任务定义中将 pidMode 设为 task。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode 设为 bridge。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • delayMilliseconds – 可选。延迟(单位:毫秒)。默认为 200。

  • jitterMilliseconds – 可选。抖动(单位:毫秒)。默认值为 10。

  • sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和S3DYNAMODB如果指定值为 DYNAMODBS3,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项分别是 atddigjqtc

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ecs:task-network-packet-loss

使用针对特定来源的出口流量的tc工具将数据包丢失添加到网络接口。使用 AWSFIS-Run-Network-Packet-Loss-Sources SSM 文档。必须在任务定义中将 pidMode 设为 task。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode 设为 bridge。有关更多信息,请参阅 ECS任务操作

资源类型
  • aws:ecs:task

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • lossPercent – 可选。丢包率。默认为 7%。

  • sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和S3DYNAMODB如果指定值为 DYNAMODBS3,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4

  • installDependencies – 可选。如果此值为True,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为 True。依赖项分别是 atddigjqtc

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

亚马逊的EKS行动

AWS FIS 支持以下 Amazon EKS 操作。

aws:eks:inject-kubernetes-custom-resource

在单个目标集群上运行 ChaosMesh 或 Litmus 实验。您必须在目标集群上安装 ChaosMesh 或 Litmus。

创建实验模板并定义目标类型时aws:eks:cluster,必须将此操作定位到单个 Amazon 资源名称 (ARN)。此操作不支持使用资源标签、筛选条件或参数定义目标。

安装时 ChaosMesh,必须指定相应的容器运行时。从亚马逊EKS版本 1.23 开始,默认运行时从 Docker 更改为。containerd从版本 1.24 版本起,删除 Docker。

资源类型
  • aws:eks:cluster

参数
  • kubernetesApiVersionKubernetes 自定义资源的API版本。值可能是 chaos-mesh.org/v1alpha1 | litmuschaos.io/v1alpha1

  • kubernetesKind:Kubernetes 自定义资源类型。该值取决于API版本。

    • chaos-mesh.org/v1alpha1:值可能是 AWSChaos | DNSChaos | GCPChaos | HTTPChaos | IOChaos | JVMChaos | KernelChaos | NetworkChaos | PhysicalMachineChaos | PodChaos | PodHttpChaos | PodIOChaos | PodNetworkChaos | Schedule | StressChaos | TimeChaos |

    • litmuschaos.io/v1alpha1:值可能是 ChaosEngine

  • kubernetesNamespaceKubernetes 命名空间

  • kubernetesSpec— Kubernetes 自定义资源的spec部分,采用格式。JSON

  • maxDuration:允许完成自动化执行的最长时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限

此操作不需要 AWS 身份和访问管理 (IAM) 权限。使用此操作所需的权限由 Kubernetes 通过授权进行控制。RBAC有关更多信息,请参阅 Kubernetes 官方文档中的使用RBAC授权。有关 Chaos Mesh 的更多信息,请参阅 Chaos Mesh 官方文档。有关 Litmus 的更多信息,请参阅 Litmus 官方文档

aws:eks:pod-cpu-stress

在目标 pod 上运行 CPU stress。有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 压力测试的持续时间,格式ISO为 8601。

  • percent – 可选。目标负载百分比,从 0(空载)到 100(满载)不等。默认值为 100。

  • workers – 可选。要使用的压力源数量。默认为 0,使用所有压力源。

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

  • fisPodSecurityPolicy – 可选。Kubernetes 安全标准策略,用于由FIS创建的故障编排容器和临时容器。可能的值为privilegedbaselinerestricted。此操作与所有策略级别兼容。

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-delete

删除目标容器组(pod)。有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • gracePeriodSeconds – 可选。等待容器组(pod)正常终止的持续时间(单位:秒)。如果值为 0,则立即执行操作。如果值为 nil,则使用容器组(pod)的默认宽限期。

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

  • fisPodSecurityPolicy – 可选。Kubernetes 安全标准策略,用于由FIS创建的故障编排容器和临时容器。可能的值为privilegedbaselinerestricted。此操作与所有策略级别兼容。

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-io-stress

在目标容器组(pod)上运行 I/O 压力测试。有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 压力测试的持续时间,格式ISO为 8601。

  • workers – 可选。工作程序数量。工作程序会混合执行读/写操作(顺序操作、随机操作和内存映射操作)、强制同步操作和缓存删除操作。多个子进程对同一个文件执行不同的 I/O 操作。默认 为 1。

  • percent – 可选。在压力测试期间,文件系统上使用的空闲空间百分比。默认为 80%。

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

  • fisPodSecurityPolicy – 可选。Kubernetes 安全标准策略,用于由FIS创建的故障编排容器和临时容器。可能的值为privilegedbaselinerestricted。此操作与所有策略级别兼容。

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-memory-stress

在目标容器组(pod)上运行内存压力测试。有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 压力测试的持续时间,格式ISO为 8601。

  • workers – 可选。要使用的压力源数量。默认 为 1。

  • percent – 可选。压力测试期间要使用的虚拟内存百分比。默认为 80%。

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

  • fisPodSecurityPolicy – 可选。Kubernetes 安全标准策略,用于由FIS创建的故障编排容器和临时容器。可能的值为privilegedbaselinerestricted。此操作与所有策略级别兼容。

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-network-blackhole-port

丢弃指定协议和端口的入站或出站流量。仅与 Kubernetes 安全标准政策兼容。privileged有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • protocol— 协议。可能的值为 tcpudp

  • trafficType:流量类型。可能的值为 ingressegress

  • port:端口号。

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-network-latency

使用 tc 工具,为往返于特定来源的流量添加网络接口的延迟和抖动。仅与 Kubernetes 安全标准政策兼容。privileged有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • interface – 可选。网络接口。默认为 eth0

  • delayMilliseconds – 可选。延迟(单位:毫秒)。默认为 200。

  • jitterMilliseconds – 可选。抖动(单位:毫秒)。默认值为 10。

  • sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和S3DYNAMODB如果指定值为 DYNAMODBS3,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:pod-network-packet-loss

使用 tc 工具,为网络接口添加丢包。仅与 Kubernetes 安全标准政策兼容。privileged有关更多信息,请参阅 EKS吊舱动作

资源类型
  • aws:eks:pod

参数
  • duration— 测试持续时间,采用 ISO 8601 格式。

  • interface – 可选。网络接口。默认为 eth0

  • lossPercent – 可选。丢包率。默认为 7%。

  • sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和S3DYNAMODB如果指定值为 DYNAMODBS3,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4

  • kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户

  • fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像

  • maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。

  • fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS

  • fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS

权限
  • eks:DescribeCluster

  • ec2:DescribeSubnets

  • tag:GetResources

aws:eks:terminate-nodegroup-instances

对目标节点组运行 Amaz TerminateInstanceson EC2 API 操作。

资源类型
  • aws:eks:nodegroup

参数
  • instanceTerminationPercentage:要终止的实例百分比 (1 - 100)。

权限
  • ec2:DescribeInstances

  • ec2:TerminateInstances

  • eks:DescribeNodegroup

  • tag:GetResources

亚马逊的 ElastiCache 行动

AWS FIS 支持以下 ElastiCache 操作。

aws:elasticache:interrupt-cluster-az-power

中断目标 Redis OSS 复制组指定可用区内节点的电源。每个复制组一次只能影响一个可用区。如果将某个主节点确定为目标,则复制滞后时间最短的相应只读副本将被提升为主节点。在此操作期间,指定可用区内的只读副本替换将被阻止,这意味着目标复制组的运行容量会降低。

资源类型
  • aws:elasticache:redis-replicationgroup

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • elasticache:InterruptClusterAzPower

  • elasticache:DescribeReplicationGroups

  • tag:GetResources

网络操作

AWS FIS 支持以下网络操作。

aws:network:disrupt-connectivity

拒绝向目标子网发送指定流量。使用网络ACLs。

资源类型
  • aws:ec2:subnet

参数
  • scope:要拒绝的流量类型。如果范围不是all,则网络中的最大条目数ACLs为 20。可能的值包括:

    • all:拒绝所有往返于子网的流量。请注意,此选项允许子网内流量,包括往返于子网中网络接口的流量。

    • availability-zone— 拒绝进出其他可用区子网的内部VPC流量。a 中可以定位的最大子网数VPC为 30。

    • dynamodb:拒绝往返于当前区域中 DynamoDB 区域端点的流量。

    • prefix-list:拒绝往返于指定前缀列表的流量。

    • s3:拒绝往返于当前区域中 Amazon S3 区域端点的流量。

    • vpc— 拒绝进入和离开的流量VPC。

  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • prefixListIdentifier:如果范围为 prefix-list,即为客户托管前缀列表的标识符。您可以指定名称、ID 或ARN。前缀列表最多可以有 10 个条目。

权限
  • ec2:CreateNetworkAcl— ACL 使用标签 managedBy FIS =true 创建网络。

  • ec2:CreateNetworkAclEntry— 网络的标签ACL必须managedByFIS为 =true。

  • ec2:CreateTags

  • ec2:DeleteNetworkAcl— 网络的标签ACL必须managedByFIS为 =true。

  • ec2:DescribeManagedPrefixLists

  • ec2:DescribeNetworkAcls

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:GetManagedPrefixListEntries

  • ec2:ReplaceNetworkAclAssociation

aws:network:route-table-disrupt-cross-region-connectivity

阻止源自目标子网并发往指定区域的流量。创建包含要隔离的区域的所有路由的路由表。FIS要允许创建这些路由表,请将 Amazon VPC 配额提高routes per route table到 250,再加上现有路由表中的路由数量。

资源类型
  • aws:ec2:subnet

参数
  • region:要隔离的区域的代码(例如,eu-west-1)。

  • duration:操作持续的时间长度。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • ec2:AssociateRouteTable

  • ec2:CreateManagedPrefixList

  • ec2:CreateNetworkInterface

  • ec2:CreateRoute

  • ec2:CreateRouteTable

  • ec2:CreateTags

  • ec2:DeleteManagedPrefixList

  • ec2:DeleteNetworkInterface

  • ec2:DeleteRouteTable

  • ec2:DescribeManagedPrefixLists

  • ec2:DescribeNetworkInterfaces

  • ec2:DescribeRouteTables

  • ec2:DescribeSubnets

  • ec2:DescribeVpcPeeringConnections

  • ec2:DescribeVpcs

  • ec2:DisassociateRouteTable

  • ec2:GetManagedPrefixListEntries

  • ec2:ModifyManagedPrefixList

  • ec2:ModifyVpcEndpoint

  • ec2:ReplaceRouteTableAssociation

† 使用标签划定范围 managedByFIS=true.

aws:network:transit-gateway-disrupt-cross-region-connectivity

阻止源自目标中转网关对等连接并发往指定区域的流量。

资源类型
  • aws:ec2:transit-gateway

参数
  • region:要隔离的区域的代码(例如,eu-west-1)。

  • duration:操作持续的时间长度。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • ec2:AssociateTransitGatewayRouteTable

  • ec2:DescribeTransitGatewayAttachments

  • ec2:DescribeTransitGatewayPeeringAttachments

  • ec2:DescribeTransitGateways

  • ec2:DisassociateTransitGatewayRouteTable

亚马逊的RDS行动

AWS FIS 支持以下 Amazon RDS 操作。

aws:rds:failover-db-cluster

在目标 Aurora 数据库集群ailoverDBCluster上运行亚马逊RDSAPI操作 F

资源类型
  • aws:rds:cluster

参数
权限
  • rds:FailoverDBCluster

  • rds:DescribeDBClusters

  • tag:GetResources

aws:rds:reboot-db-instances

在目标数据库实例ebootDBInstance上运行 Amazon RDS API 操作 R

资源类型
  • aws:rds:db

参数
  • forceFailover – 可选。如果值为 True,且实例为多可用区,则强制从一个可用区故障转移到另一个可用区。默认值为 false。

权限
  • rds:RebootDBInstance

  • rds:DescribeDBInstances

  • tag:GetResources

Amazon S3 操作

AWS FIS 支持以下 Amazon S3 操作。

aws:s3:bucket-pause-replication

暂停从目标源存储桶到目的地存储桶的复制。目标存储桶可以位于不同的AWS区域,也可以与源存储桶位于同一区域内。操作开始后,现有对象可能会继续复制最多一个小时。此操作仅支持按标签确定目标。要了解有关 Amazon S3 复制的更多信息,请参阅 Amazon S3 用户指南

资源类型
  • aws:s3:bucket

参数
  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

  • region— 目标存储桶所在的AWS区域。

  • destinationBuckets – 可选。以逗号分隔的目的地 S3 存储桶列表。

  • prefixes – 可选。复制规则筛选条件中以逗号分隔的 S3 对象键前缀列表。使用基于前缀的筛选条件的目标存储桶复制规则将暂停。

权限
  • S3:PutReplicationConfiguration,条件键 S3:IsReplicationPauseRequest 设置为 True

  • S3:GetReplicationConfiguration,条件键 S3:IsReplicationPauseRequest 设置为 True

  • S3:PauseReplication

  • S3:ListAllMyBuckets

  • tag:GetResources

有关策略示例,请参阅示例:使用 aws:s3:bucket-pause-replication 条件键

Systems Manager 操作

AWS FIS 支持以下 Systems Manager 操作。

aws:ssm:send-command

对目标EC2实例运行 System SendCommands Manager API 操作。Systems Manager SSM 文档(文档)定义了系统管理器对您的实例执行的操作。有关更多信息,请参阅 使用 aws:ssm:send-command action

资源类型
  • aws:ec2:instance

参数
  • documentArn— 文档的亚马逊资源名称 (ARN)。在控制台中,如果您从 “操作类型” 中选择一个与预先配置的 AWS FIS SSM文档相对应的值,则会为您完成此参数。

  • documentVersion – 可选。文档版本。如果为空,则运行默认版本。

  • documentParameters:此操作设有条件。文档接受的必要参数和可选参数。格式是一个JSON对象,其键是字符串,值可以是字符串或字符串数组。

  • duration:持续时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • ssm:SendCommand

  • ssm:ListCommands

  • ssm:CancelCommand

aws:ssm:start-automation-execution

运行 Systems Manager API 操作StartAutomationExecution

资源类型
参数
  • documentArn— 自动化文档的 Amazon 资源名称 (ARN)。

  • documentVersion – 可选。文档版本。如果为空,则运行默认版本。

  • documentParameters:此操作设有条件。文档接受的必要参数和可选参数。格式是一个JSON对象,其键是字符串,值可以是字符串或字符串数组。

  • maxDuration:允许完成自动化执行的最长时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。

权限
  • ssm:GetAutomationExecution

  • ssm:StartAutomationExecution

  • ssm:StopAutomationExecution

  • iam:PassRole – 可选。如果自动化文档代入角色,则为必填项。