Amazon ECS 故障注入端点 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon ECS 故障注入端点

Amazon ECS 容器代理自动将 ECS_AGENT_URI 环境变量注入 Amazon ECS 任务的容器中,以提供与容器代理 API 端点交互的方法。每个端点都包含一个 /start/stop/status 端点。这些端点仅接受来自已启用故障注入功能的任务的请求,并且每个端点的速率限制为每个容器每 51 个请求。超过此限制将会导致错误。

注意

需要使用 Amazon ECS 代理 version 1.88.0+ 才能使用故障注入端点。

用于故障注入的三个端点如下:

请求成功会生成响应代码 200,并且调用 /start 端点时会生成一条 running 消息,调用 /stop 端点时会生成一条 stopped 消息,调用 /status 端点时会生成一条 runningnot-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