Amazon ECS 장애 주입 엔드포인트
Amazon ECS 장애 주입 엔드포인트 (fault injection endpoints)
Amazon ECS 컨테이너 에이전트는 컨테이너 에이전트 API 엔드포인트와 상호작용하는 방법을 제공하기 위해 Amazon ECS 태스크의 컨테이너에 ECS_AGENT_URI 환경 변수를 자동으로 주입합니다. 이 글에서는 장애 주입에 사용하는 세 가지 엔드포인트에 대해 알아봅니다.
출처: 문서
본문
Amazon ECS 컨테이너 에이전트는 컨테이너 에이전트 API 엔드포인트와 상호작용하는 방법을 제공하기 위해 Amazon ECS 태스크의 컨테이너에 ECS_AGENT_URI 환경 변수를 자동으로 주입합니다. 각 엔드포인트에는 /start, /stop, /status 엔드포인트가 포함됩니다.
엔드포인트는 장애 주입(fault injection)을 활성화한 태스크의 요청만 수락하며, 각 엔드포인트는 컨테이너당 5초에 1회 요청의 속도 제한이 있습니다. 이 제한을 초과하면 오류가 발생합니다.
참고: 장애 주입 엔드포인트를 사용하려면 Amazon ECS 에이전트 버전 1.88.0 이상이 필요합니다.
장애 주입에 사용하는 세 가지 엔드포인트는 다음과 같습니다:
- 네트워크 블랙홀 포트 엔드포인트(Network blackhole port endpoint)
- 네트워크 패킷 손실 엔드포인트(Network packet loss endpoint)
- 네트워크 지연 엔드포인트(Network latency endpoint)
성공적인 요청은 /start 엔드포인트를 호출하면 응답 코드 200과 running 메시지를, /stop 엔드포인트는 stopped를, /status 엔드포인트는 running 또는 not-running을 반환합니다.
{
"Status": <string>
}
실패한 요청은 다음 오류 코드 중 하나를 반환합니다:
400— 잘못된 요청(Bad request)409— 장애 주입 요청이 실행 중인 다른 장애와 충돌429— 요청이 스로틀링됨500— 서버에 예기치 않은 오류 발생
{
"Error": <string message>
}
참고: 한 번에 네트워크 지연 장애 하나 또는 네트워크 패킷 손실 장애 하나만 주입할 수 있습니다. 하나 이상 주입하려고 하면 요청이 거부됩니다.
네트워크 블랙홀 포트 엔드포인트 (Network blackhole port endpoint)
{ECS_AGENT_URI}/fault/v1/network-blackhole-port 엔드포인트는 태스크의 네트워크 네임스페이스에서 특정 포트와 프로토콜의 인바운드 또는 아웃바운드 트래픽을 드롭하며 두 가지 모드와 호환됩니다:
awsvpc— 변경 사항이 태스크 네트워크 네임스페이스에 적용됩니다.host— 변경 사항이 컨테이너 인스턴스의 기본 네트워크 네임스페이스에 적용됩니다.
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/start
이 엔드포인트는 네트워크 블랙홀 포트 장애 주입을 시작하며 다음 파라미터가 있습니다:
Port— 블랙홀 포트 장애 주입에 사용할 지정 포트. Type: Integer, Required: YesProtocol— 블랙홀 포트 장애 주입에 사용할 프로토콜. Type: String, Valid values:tcp|udp, Required: YesTrafficType— 장애 주입이 사용하는 트래픽 유형. Type: String, Valid values:ingress|egress, Required: YesSourcesToFilter— 장애로부터 보호되는 IPv4 또는 IPv6 주소 또는 CIDR 블록의 JSON 배열. Type: Array of strings, Required: No
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
이 엔드포인트는 요청에 지정된 장애를 중지합니다. 이 엔드포인트에는 다음 파라미터가 있습니다:
Port— 중지해야 할 장애의 영향을 받는 포트. Type: Integer, Required: YesProtocol— 장애를 중지하는 데 사용할 프로토콜. Type: String, Valid values:tcp|udp, Required: YesTrafficType— 장애 주입이 사용하는 트래픽 유형. Type: String, Valid values:ingress|egress, Required: Yes
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
이 엔드포인트는 장애 주입의 상태를 확인하는 데 사용됩니다. 이 엔드포인트에는 다음 파라미터가 있습니다:
Port— 장애 상태를 확인할 영향을 받는 포트. Type: Integer, Required: YesProtocol— 장애 상태 확인 시 사용할 프로토콜. Type: String, Valid values:tcp|udp, Required: YesTrafficType— 장애 주입이 사용하는 트래픽 유형. Type: String, Valid values:ingress|egress, Required: Yes
status 엔드포인트 사용 예시 요청:
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status
Http method: POST
Request payload:
{
"Port": 1234,
"Protocol": "tcp|udp",
"TrafficType": "ingress|egress",
}
네트워크 지연 엔드포인트 (Network latency endpoint)
{ECS_AGENT_URI}/fault/v1/network-latency 엔드포인트는 특정 소스로의 트래픽에 대해 태스크의 네트워크 인터페이스에 지연(delay)과 지터(jitter)를 추가합니다. 엔드포인트는 두 가지 모드와 호환됩니다:
awsvpc— 변경 사항이 태스크 네트워크 인터페이스에 적용됩니다.host— 변경 사항이 기본 네트워크 인터페이스에 적용됩니다.
{ECS_AGENT_URI}/fault/v1/network-latency/start
이 /start 엔드포인트는 네트워크 지연 장애 주입을 시작하며 다음 파라미터가 있습니다:
DelayMilliseconds— 장애 주입에 사용할 네트워크 인터페이스에 추가할 지연의 밀리초 수. Type: Integer, Required: YesJitterMilliseconds— 장애 주입에 사용할 네트워크 인터페이스에 추가할 지터의 밀리초 수. Type: Integer, Required: YesSources— 장애 주입에 사용할 대상인 IPv4 또는 IPv6 주소 또는 CIDR 블록의 JSON 배열. Type: Array of strings, Required: YesSourcesToFilter— 장애로부터 보호되는 IPv4 또는 IPv6 주소 또는 CIDR 블록의 JSON 배열.SourcesToFilter는Sources보다 우선합니다. Type: Array of strings, Required: No
/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 및 /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
네트워크 패킷 손실 엔드포인트 (Network packet loss endpoint)
{ECS_AGENT_URI}/fault/v1/network-packet-loss 엔드포인트는 주어진 네트워크 인터페이스에 패킷 손실을 추가합니다. 이 엔드포인트는 두 가지 모드와 호환됩니다:
awsvpc— 변경 사항이 태스크 네트워크 인터페이스에 적용됩니다.host— 변경 사항이 기본 네트워크 인터페이스에 적용됩니다.
{ECS_AGENT_URI}/fault/v1/network-packet-loss/start
이 /start 엔드포인트는 네트워크 패킷 손실 장애 주입을 시작하며 다음 파라미터가 있습니다:
LossPercent— 패킷 손실 비율. Type: Integer, Required: YesSources— 장애 주입 테스트에 사용할 IPv4 또는 IPv6 주소 또는 CIDR 블록의 JSON 배열. Type: Array of strings, Required: YesSourcesToFilter— 장애로부터 보호되는 IPv4 또는 IPv6 주소 또는 CIDR 블록의 JSON 배열.SourcesToFilter는Sources보다 우선합니다. Type: Array of strings, Required: No
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 및 /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
더 알아보기 (Learn more)
- 장애 주입 및 Amazon ECS 장애 주입 활성화에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.