Amazon ECS フォールトインジェクションエンドポイント
Amazon ECS コンテナエージェントは、ECS_AGENT_URI
環境変数を Amazon ECS タスクのコンテナに自動的に挿入して、コンテナエージェント API エンドポイントとやり取りする方法を提供します。各エンドポイントには、/start
、/stop
、および /status
エンドポイントが含まれます。エンドポイントは、フォールトインジェクションを有効にしたタスクからのリクエストのみを受け入れ、各エンドポイントにはコンテナあたり 5 秒間に 1 リクエストというレート制限があります。この制限を超えるとエラーが発生します。
フォールトインジェクションで使用する 3 つのエンドポイントは以下のとおりです。
リクエストが成功すると、/start
エンドポイントを呼び出す場合 running
のメッセージが記載された 200
応答コードとなり、/stop
エンドポイントの場合は stopped
、/status
エンドポイントの場合は running
または not-running
となります。
{ "Status": <string> }
リクエストが成功しなかった場合は、以下のいずれかのエラーコードを返します。
-
400
– Bad request・ -
409
– フォールトインジェクションリクエストが別の実行中の障害と競合する -
429
– リクエストがスロットリングされました -
500
– サーバーに予期しないエラーが発生しました
{ "Error": <string message> }
注記
1 回に挿入できるのは、1 つのネットワークレイテンシー障害、または 1 つのネットワークパケット損失障害のいずれかです。複数の結果を挿入しようとすると、リクエストは拒否されます。
ネットワークブラックホールポートエンドポイント
{ECS_AGENT_URI}/fault/v1/network-blackhole-port
エンドポイントは、タスクのネットワーク名前空間内の特定のポートとプロトコルの受信トラフィックまたは送信トラフィックをドロップし、次の 2 つのモードと互換性があります。
-
awsvpc — 変更がタスクネットワーク名前空間に適用されます
-
ホスト — 変更はデフォルトのネットワーク名前空間コンテナインスタンスに適用されます
{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
エンドポイントは、特定のソースへのトラフィックに対してタスクのネットワークインターフェイスに遅延とジッターを追加します。このエンドポイントは 2 つのモードと互換性があります。
-
awsvpc — 変更がタスクネットワークインターフェイスに適用されます
-
ホスト — 変更はデフォルトのネットワークインターフェイスに適用されます
{ECS_AGENT_URI}/fault/v1/network-latency/start
この/start
エンドポイントは、ネットワークレイテンシーのフォールトインジェクションを開始し、以下のパラメータがあります。
DelayMilliseconds
フォールトインジェクションに使用するネットワークインターフェイスに追加する遅延のミリ秒数。
タイプ: 整数
必須: はい
JitterMilliseconds
フォールトインジェクションに使用するネットワークインターフェイスに追加するジッターのミリ秒数。
タイプ: 整数
必須: はい
[Sources] (出典)
フォールトインジェクションで使用する宛先である 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
のエンドポイントを使用する際の 2 つのリクエストの例です。どちらも 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
エンドポイントは、指定されたネットワークインターフェイスへのパケット損失を追加します。このエンドポイントは、次の 2 つのモードと互換性があります。
-
awsvpc — 変更がタスクネットワークインターフェイスに適用されます
-
ホスト — 変更はデフォルトのネットワークインターフェイスに適用されます
{ECS_AGENT_URI}/fault/v1/network-packet-loss/start
この /start
エンドポイントは、ネットワークパケット損失フォールトインジェクションを開始し、以下のパラメータがあります。
LossPercent
パケット損失の割合
タイプ: 整数
必須: はい
[Sources] (出典)
フォールトインジェクションテストに使用する 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
は障害のステータスを確認します。1 回でサポートされる障害のタイプは 1 つだけです。
以下は、/stop
と /status
のエンドポイントを使用する際の 2 つのリクエストの例です。どちらも POST HTTP
メソッドを使用します。
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status