本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 操作
有关 AWS FIS 操作工作原理的更多信息,请参阅的操作 AWS FIS和AWS 故障注入服务的工作原理 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:警报状态,用逗号分隔。警报状态可能是
OK
、ALARM
和INSUFFICIENT_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-error
,ec2: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-error
ec2:FisTargetArns
条件键设置为目标 Auto Scaling 组。 -
autoscaling:DescribeAutoScalingGroups
有关策略示例,请参阅示例:使用 ec2:InjectApiError 条件键。
aws:ec2:reboot-instances
对目标EC2实例运行 Amaz RebootInstanceson EC2 API 操作。
资源类型
-
aws:ec2:instance
参数
-
无
权限
-
ec2:RebootInstances
-
ec2:DescribeInstances
AWS 托管策略
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 托管策略
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 托管策略
aws:ec2:terminate-instances
对目标EC2实例运行 Amaz TerminateInstanceson EC2 API 操作。
资源类型
-
aws:ec2:instance
参数
-
无
权限
-
ec2:TerminateInstances
-
ec2:DescribeInstances
AWS 托管策略
亚马逊的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 托管策略
aws:ecs:stop-task
运行 Amazon ECS API 操作StopTask以停止目标任务。
资源类型
-
aws:ecs:task
参数
无
权限
ecs:DescribeTasks
ecs:ListTasks
ecs:StopTask
tag:GetResources
AWS 托管策略
aws:ecs:task-cpu-stress
对目标任务运行 str CPU ess。使用 AWSFIS-Run-CPU-SSM Stres
资源类型
-
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 文档
资源类型
-
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 文档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 文档pidMode
设为 task
。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode
设为 bridge
。有关更多信息,请参阅 ECS任务操作。
资源类型
-
aws:ecs:task
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
port:端口号。
-
trafficType:流量类型。可能的值为
ingress
和egress
。 -
protocol – 可选。协议。可能的值为
tcp
和udp
。默认为tcp
。 -
installDependencies – 可选。如果此值为
True
,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为True
。依赖项分别是 atd、dig 和 iptables。
权限
ssm:SendCommand
ssm:ListCommands
ssm:CancelCommand
aws:ecs:task-network-latency
使用该tc工具为特定来源的出口流量增加网络接口的延迟和抖动。使用 AWSFIS-Run-Network-Latency-SourcespidMode
设为 task
。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode
设为 bridge
。有关更多信息,请参阅 ECS任务操作。
资源类型
-
aws:ecs:task
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
delayMilliseconds – 可选。延迟(单位:毫秒)。默认为 200。
-
jitterMilliseconds – 可选。抖动(单位:毫秒)。默认值为 10。
-
sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和
S3
。DYNAMODB
如果指定值为DYNAMODB
或S3
,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4 -
installDependencies – 可选。如果此值为
True
,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为True
。依赖项分别是 atd、dig、jq 和 tc。
权限
ssm:SendCommand
ssm:ListCommands
ssm:CancelCommand
aws:ecs:task-network-packet-loss
使用针对特定来源的出口流量的tc工具将数据包丢失添加到网络接口。使用 AWSFIS-Run-Network-Packet-Loss-SourcespidMode
设为 task
。任务必须由管理 AWS Systems Manager。您不能在任务定义中将 networkMode
设为 bridge
。有关更多信息,请参阅 ECS任务操作。
资源类型
-
aws:ecs:task
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
lossPercent – 可选。丢包率。默认为 7%。
-
sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和
S3
。DYNAMODB
如果指定值为DYNAMODB
或S3
,则仅适用于当前区域中的区域端点。默认值为 0.0.0.0/0,它匹配所有流量。IPv4 -
installDependencies – 可选。如果此值为
True
,则 Systems Manager 会在SSM代理的 sidecar 容器上安装所需的依赖项(如果尚未安装这些依赖项)。默认为True
。依赖项分别是 atd、dig、jq 和 tc。
权限
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
参数
kubernetesApiVersion— Kubernetes
自定义资源的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
。
-
kubernetesNamespace:Kubernetes 命名空间
kubernetesSpec— Kubernetes 自定义资源的
spec
部分,采用格式。JSONmaxDuration:允许完成自动化执行的最长时间,从一分钟到 12 小时不等。在中 AWS FIS API,值是 ISO 8601 格式的字符串。例如,PT1M表示一分钟。在 AWS FIS 控制台中,您可以输入秒数、分钟数或小时数。
权限
此操作不需要 AWS 身份和访问管理 (IAM) 权限。使用此操作所需的权限由 Kubernetes 通过授权进行控制。RBAC有关更多信息,请参阅 Kubernetes 官方文档中的使用RBAC授权
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创建的故障编排容器和临时容器。可能的值为 privileged
、baseline
和restricted
。此操作与所有策略级别兼容。
权限
eks:DescribeCluster
ec2:DescribeSubnets
tag:GetResources
AWS 托管策略
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创建的故障编排容器和临时容器。可能的值为 privileged
、baseline
和restricted
。此操作与所有策略级别兼容。
权限
eks:DescribeCluster
ec2:DescribeSubnets
tag:GetResources
AWS 托管策略
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创建的故障编排容器和临时容器。可能的值为 privileged
、baseline
和restricted
。此操作与所有策略级别兼容。
权限
eks:DescribeCluster
ec2:DescribeSubnets
tag:GetResources
AWS 托管策略
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创建的故障编排容器和临时容器。可能的值为 privileged
、baseline
和restricted
。此操作与所有策略级别兼容。
权限
eks:DescribeCluster
ec2:DescribeSubnets
tag:GetResources
AWS 托管策略
aws:eks:pod-network-blackhole-port
丢弃指定协议和端口的入站或出站流量。仅与 Kubernetes 安全privileged
有关更多信息,请参阅 EKS吊舱动作。
资源类型
-
aws:eks:pod
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
protocol— 协议。可能的值为
tcp
和udp
。 -
trafficType:流量类型。可能的值为
ingress
和egress
。 -
port:端口号。
-
kubernetesServiceAccount:Kubernetes 服务账户。有关所需权限的信息,请参阅配置 Kubernetes 服务账户。
-
fisPodContainerImage – 可选。用于创建故障注入容器组(pod)的容器映像。默认为使用提供的图像 AWS FIS。有关更多信息,请参阅 容器组(pod)容器映像。
-
maxErrorsPercent – 可选。可能比故障注入更早失败的目标的百分比。默认值是 0。
-
fisPodLabels – 可选。附加到由创建的故障编排容器的 Kubernetes 标签。FIS
-
fisPodAnnotations – 可选。附加到由创建的故障编排窗格的 Kubernetes 注释。FIS
权限
eks:DescribeCluster
ec2:DescribeSubnets
tag:GetResources
AWS 托管策略
aws:eks:pod-network-latency
使用 tc 工具,为往返于特定来源的流量添加网络接口的延迟和抖动。仅与 Kubernetes 安全privileged
有关更多信息,请参阅 EKS吊舱动作。
资源类型
-
aws:eks:pod
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
interface – 可选。网络接口。默认为
eth0
。 -
delayMilliseconds – 可选。延迟(单位:毫秒)。默认为 200。
-
jitterMilliseconds – 可选。抖动(单位:毫秒)。默认值为 10。
-
sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和
S3
。DYNAMODB
如果指定值为DYNAMODB
或S3
,则仅适用于当前区域中的区域端点。默认值为 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 托管策略
aws:eks:pod-network-packet-loss
使用 tc 工具,为网络接口添加丢包。仅与 Kubernetes 安全privileged
有关更多信息,请参阅 EKS吊舱动作。
资源类型
-
aws:eks:pod
参数
-
duration— 测试持续时间,采用 ISO 8601 格式。
-
interface – 可选。网络接口。默认为
eth0
。 -
lossPercent – 可选。丢包率。默认为 7%。
-
sources – 可选。来源,用逗号分隔。可能的值为:IPv4地址、IPv4CIDR区块、域名和
S3
。DYNAMODB
如果指定值为DYNAMODB
或S3
,则仅适用于当前区域中的区域端点。默认值为 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 托管策略
aws:eks:terminate-nodegroup-instances
对目标节点组运行 Amaz TerminateInstanceson EC2 API 操作。
资源类型
-
aws:eks:nodegroup
参数
instanceTerminationPercentage:要终止的实例百分比 (1 - 100)。
权限
ec2:DescribeInstances
ec2:TerminateInstances
eks:DescribeNodegroup
tag:GetResources
AWS 托管策略
亚马逊的 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 托管策略
aws:rds:reboot-db-instances
在目标数据库实例ebootDBInstance上运行 Amazon RDS API 操作 R。
资源类型
-
aws:rds:db
参数
forceFailover – 可选。如果值为 True,且实例为多可用区,则强制从一个可用区故障转移到另一个可用区。默认值为 false。
权限
rds:RebootDBInstance
rds:DescribeDBInstances
tag:GetResources
AWS 托管策略
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 托管策略
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
– 可选。如果自动化文档代入角色,则为必填项。