Amazon ECS 故障注入端點 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon ECS 故障注入端點

Amazon ECS 容器代理程式會自動將 ECS_AGENT_URI 環境變體注入 Amazon ECS 任務的容器中,以提供與容器代理程式 API 端點互動的方法。每個端點都包含 /start/stop/status端點。這些端點僅接受已啟用故障注入之任務的請求,且每個端點的速率限制為每個容器每 51 個請求。超過此限制會導致錯誤。

注意

需要具有 Amazon ECS Agent 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 – 變更會套用至任務網路命名空間

  • 主機 – 變更會套用至預設網路命名空間容器執行個體

{ECS_AGENT_URI}/fault/v1/network-blackhole-port/start

此端點會啟動網路黑洞連接埠故障注入,並具有下列參數:

站點

用於黑洞連接埠故障注入的指定連接埠。

類型:整數

必要:是

通訊協定

用於黑洞連接埠故障注入的通訊協定。

類型:字串

有效值:tcp | udp

必要:是

TrafficType

故障注入使用的流量類型。

類型:字串

有效值:ingress | egress

必要:是

SourcesToFilter

受故障保護的 IPv4 或 IPv6 位址或 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 – 變更會套用至任務網路介面

  • 主機 – 變更會套用至預設網路介面

{ECS_AGENT_URI}/fault/v1/network-latency/start

/start 端點會開始網路延遲故障注入,並具有下列參數:

DelayMilliseconds

要新增至網路介面以用於故障注入的延遲毫秒數。

類型:整數

必要:是

JitterMilliseconds

要新增至網路介面以用於故障注入的抖動毫秒數。

類型:整數

必要:是

來源

IPv4 或 IPv6 位址或 CIDR 區塊的 JSON 陣列,作為用於故障注入的目的地。

類型:字串陣列

必要:是

SourcesToFilter

受故障保護的 IPv4 或 IPv6 位址或 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 – 變更會套用至任務網路介面

  • 主機 – 變更會套用至預設網路介面

{ECS_AGENT_URI}/fault/v1/network-packet-loss/start

/start 端點會開始網路封包遺失故障注入,並具有下列參數:

LossPercent

封包遺失百分比

類型:整數

必要:是

來源

IPv4 或 IPv6 位址或 CIDR 區塊的 JSON 陣列,用於故障注入測試。

類型:字串陣列

必要:是

SourcesToFilter

受故障保護的 IPv4 或 IPv6 位址或 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