Amazon ECS 故障注入端点
Amazon ECS 容器代理自动将 ECS_AGENT_URI
环境变量注入 Amazon ECS 任务的容器中,以提供与容器代理 API 端点交互的方法。每个端点都包含一个 /start
、/stop
和 /status
端点。这些端点仅接受来自已启用故障注入功能的任务的请求,并且每个端点的速率限制为每个容器每 5 秒 1 个请求。超过此限制将会导致错误。
注意
需要使用 Amazon ECS 代理 version 1.88.0+
才能使用故障注入端点。
用于故障注入的三个端点如下:
请求成功会生成响应代码 200
,并且调用 /start
端点时会生成一条 running
消息,调用 /stop
端点时会生成一条 stopped
消息,调用 /status
端点时会生成一条 running
或 not-running
消息。
{ "Status": <string> }
请求失败则会返回以下错误代码之一:
-
400
:请求错误 -
409
:故障注入请求与另一个正在运行的故障冲突 -
429
:请求被节流 -
500
:服务器出现意外错误
{ "Error": <string message> }
注意
一次只能注入一个网络延迟故障或一个网络丢包故障。如果尝试注入多个故障,则会导致请求被拒绝。
网络黑洞端口端点
{ECS_AGENT_URI}/fault/v1/network-blackhole-port
端点会丢弃任务网络命名空间中特定端口和协议的入站或出站流量,并且兼容两种模式:
-
awsvpc:更改将应用于任务网络命名空间
-
host:更改将应用于容器实例的默认网络命名空间
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/start
此端点会启动网络黑洞端口故障注入,并且具有以下参数:
端口
用于黑洞端口故障注入的指定端口。
类型:整数
必需:是
协议
用于黑洞端口故障注入的协议。
类型:字符串
有效值:tcp | udp
必需:是
TrafficType
故障注入使用的流量类型。
类型:字符串
有效值:ingress | egress
必需:是
SourcesToFilter
不受故障影响的 IPv4 地址或 CIDR 块的 JSON 数组。
类型:字符串数组
必需:否
以下示例请求使用 start
端点(请将红色
的值替换为您自己的值):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/start Http method:POST Request payload: { "Port":
1234
, "Protocol": "tcp|udp", "TrafficType": "ingress|egress" "SourcesToFilter": ["${IP1}", "${IP2}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop
此端点会停止请求中指定的故障。此端点具有以下参数:
端口
受应停止的故障影响的端口。
类型:整数
必需:是
协议
要用于停止故障的协议。
类型:字符串
有效值:tcp | udp
必需:是
TrafficType
故障注入使用的流量类型。
类型:字符串
有效值:ingress | egress
必需:是
以下示例请求使用 stop
端点(请将红色
的值替换为您自己的值):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop Http method: POST Request payload: { "Port":
1234
, "Protocol": "tcp|udp", "TrafficType": "ingress|egress", }
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/status
此端点用于检查故障注入的状态。此端点具有以下参数:
端口
用于检查故障状态的受影响端口。
类型:整数
必需:是
协议
检查故障状态时要使用的协议。
类型:字符串
有效值:tcp | udp
必需:是
TrafficType
故障注入使用的流量类型。
类型:字符串
有效值:ingress | egress
必需:是
以下示例请求使用 status
端点(请将红色
的值替换为您自己的值):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status Http method: POST Request payload: { "Port":
1234
, "Protocol": "tcp|udp", "TrafficType": "ingress|egress", }
网络延迟端点
{ECS_AGENT_URI}/fault/v1/network-latency
端点将针对指向特定源的流量为任务的网络接口添加延迟和抖动。此端点兼容两种模式:
-
awsvpc:更改将应用于任务网络接口
-
host:更改将应用于默认网络接口
{ECS_AGENT_URI}/fault/v1/network-latency/start
此 /start
端点会启动网络延迟故障注入,并且具有以下参数:
DelayMilliseconds
添加到该网络接口以用于故障注入的延迟毫秒数。
类型:整数
必需:是
JitterMilliseConds
添加到该网络接口以用于故障注入的抖动毫秒数。
类型:整数
必需:是
源
用于故障注入的目标 IPv4 地址或 CIDR 块的 JSON 数组。
类型:字符串数组
必需:是
SourcesToFilter
不受故障影响的 IPv4 地址或 CIDR 块的 JSON 数组。SourcesToFilter
的优先级高于 Sources
。
类型:字符串数组
必需:否
以下示例请求使用 /start
端点(请将红色
的值替换为您自己的值):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/start Http method: POST Request payload: { "DelayMilliseconds":
123
, "JitterMilliseconds":123
, "Sources": ["${IP1}", "${IP2}
", ...], "SourcesToFilter": ["${IP1}
", "${IP2}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-latency/stop and /status
{ECS_AGENT_URI}/fault/v1/network-latency/stop
端点会停止该故障,然后 {ECS_AGENT_URI}/fault/v1/network-latency/status
会检查故障的状态。
以下两个示例请求使用 /stop
和 /status
端点。两者都使用 POST HTTP
方法。
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/stop
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/status
网络丢包端点
{ECS_AGENT_URI}/fault/v1/network-packet-loss
端点将为指定的网络接口添加丢包。此端点兼容两种模式:
-
awsvpc:更改将应用于任务网络接口
-
host:更改将应用于默认网络接口
{ECS_AGENT_URI}/fault/v1/network-packet-loss/start
此 /start
端点会启动丢包故障注入,并且具有以下参数:
LossPercent
丢包率
类型:整数
必需:是
源
用于故障注入测试的 IPv4 地址或 CIDR 块的 JSON 数组。
类型:字符串数组
必需:是
SourcesToFilter
不受故障影响的 IPv4 地址或 CIDR 块的 JSON 数组。SourcesToFilter
的优先级高于 Sources
。
类型:字符串数组
必需:否
以下示例请求使用 start
端点(请将红色
的值替换为您自己的值):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/start Http method: POST { "LossPercent":
6
, "Sources": ["${IP1}", "${IP2}
", ...], "SourcesToFilter": ["${IP1}
", "${IP2}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop and /status
{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
端点会停止该故障,然后 {ECS_AGENT_URI}/fault/v1/network-packet-loss/status
会检查故障的状态。一次仅支持一种故障类型。
以下两个示例请求使用 /stop
和 /status
端点。两者都使用 POST HTTP
方法。
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status