Amazon ECS Express Mode 서비스 트러블슈팅
Amazon ECS Express Mode 서비스 트러블슈팅
이 섹션은 Express Mode 서비스를 배포·관리할 때 흔히 겪는 문제를 식별하고 해결하는 데 도움을 줘요.
출처: 문서
본문
이 섹션은 Express Mode 서비스를 배포·관리할 때 흔한 문제를 식별하고 해결하는 데 도움을 줍니다.
배포 문제
서비스가 ACTIVE 또는 DRAINING 상태에 멈춤
- 증상:
DescribeServiceRevisions가 리소스가 여전히 프로비저닝 또는 디프로비저닝 중임을 보여주고,DescribeServices가 배포가 안정화되지 않았다고 보여줍니다. - 가능한 원인과 해결책:
- IAM 권한 부족 — 태스크 실행 역할(task execution role)과 인프라 역할(infrastructure role)이 각각의 관리형 정책에 표시된 필요한 권한을 갖고 있는지 확인하세요.
# Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole - 이미지 풀 실패 — 컨테이너 이미지가 존재하고 접근 가능한지 확인하세요.
# Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest - 네트워크 연결 문제 — 서브넷에 인터넷 접근이나 AWS 서비스용 Amazon VPC 엔드포인트가 있는지 확인하세요.
- 리소스 한도 — 계정에 충분한 Fargate 용량이 있고 서비스 할당량에 도달하지 않았는지 확인하세요.
- IAM 권한 부족 — 태스크 실행 역할(task execution role)과 인프라 역할(infrastructure role)이 각각의 관리형 정책에 표시된 필요한 권한을 갖고 있는지 확인하세요.
- 진단 단계:
DescribeExpressGatewayService로 현재 Service Revision을 가져온 뒤,DescribeServiceRevisions로 해당 ServiceRevision의 프로비저닝·디프로비저닝 상태를 확인합니다.- 상세 오류 메시지를 위해 Amazon ECS 콘솔의 서비스 이벤트를 확인합니다.
- 컨테이너 포트가 올바르게 설정되었는지 확인합니다.
- Amazon ECS와 Fargate의 AWS 서비스 할당량을 확인합니다.
태스크 시작 실패
- 증상: 태스크가 시작에 실패하거나 시작 직후 중지됩니다.
- 흔한 원인:
- 애플리케이션 오류 — 컨테이너 애플리케이션이 구성 또는 런타임 오류로 종료됩니다.
- 헬스 체크 실패 — 애플리케이션이 예상된 포트나 경로의 헬스 체크에 응답하지 않습니다.
- 리소스 제약 — 애플리케이션에 CPU 또는 메모리 할당이 부족합니다.
- 누락된 환경 변수 또는 시크릿 — 필요한 구성이 애플리케이션에 제공되지 않습니다.
- 해결 단계:
DescribeServiceRevisions에서 로그 그룹 이름을 얻어 CloudWatch Logs의 애플리케이션 로그를 확인합니다.aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name- 헬스 체크 경로가 HTTP 200 상태를 반환하는지 확인합니다.
- 컨테이너 이미지를 로컬에서 테스트해 올바르게 시작되는지 확인합니다.
- 필요하면 CPU와 메모리 할당을 검토·조정합니다.
사용자 지정 태스크 정의 오류
taskDefinitionArn 파라미터를 사용할 때 InvalidParameterException으로 서비스 생성·업데이트가 실패합니다.
"taskDefinitionArn cannot be provided with primaryContainer, executionRoleArn, taskRoleArn, cpu, or memory."—taskDefinitionArn파라미터는 같은 API 호출에서primaryContainer,executionRoleArn,taskRoleArn,cpu,memory와 함께 지정할 수 없습니다. Express Mode는 제공된 태스크 정의에서 이 값들을 파생합니다."Task definition must contain a container named 'Main' with a single TCP port mapping."— 태스크 정의가 Express Mode 요구 사항을 충족하지 않습니다. 다음을 갖추어야 합니다:Main이라는 이름의 컨테이너Main컨테이너가 컨테이너 포트와 포트 이름이 정의된 정확히 하나의 TCP 포트 매핑을 가질 것- 태스크 정의의 compatibilities에
FARGATE가 있을 것
연결 문제
로드 밸런서로 애플리케이션에 접근 불가
- 증상: 애플리케이션 URL이 타임아웃이나 연결 오류를 반환합니다.
- 트러블슈팅 단계:
- 리소스가 프로비저닝을 마쳤는지 검증합니다.
- 태스크가 실행 중이고 healthy한지 확인합니다.
aws ecs describe-services --cluster my-cluster --services my-express-service - Application Load Balancer 대상 그룹 상태를 확인합니다.
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id - 애플리케이션이 컨테이너 안에서 올바른 포트로 리슨 중인지 확인합니다.
성능 문제
느린 응답 시간
- 증상: 애플리케이션 응답이 예상보다 느립니다.
- 진단 방법:
- CPU와 메모리 사용률을 모니터링합니다.
# Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average - 오류나 성능 경고를 위해 애플리케이션 로그를 검토합니다.
- 자동 확장이 부하에 적절히 응답하는지 확인합니다.
- 요청 분산을 위해 로드 밸런서 메트릭을 분석합니다.
- CPU와 메모리 사용률을 모니터링합니다.
- 최적화 전략:
- 리소스가 제약되면 CPU 또는 메모리 할당을 늘립니다.
- 더 일찍 확장하도록 자동 확장 임계값을 조정합니다.
- 애플리케이션 코드와 데이터베이스 쿼리를 최적화합니다.
자동 확장이 예상대로 동작하지 않음
- 증상: 높은 부하에서 서비스가 확장되지 않거나, 낮은 부하에서 축소되지 않습니다.
- 트러블슈팅 단계:
- 자동 확장 정책과 구성을 확인합니다.
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service - 확장 트리거가 충족되고 있는지 CloudWatch 메트릭을 검토합니다.
- 서비스에 확장 권한이 있는지 확인합니다(IAM 역할 확인).
- 확장 활동과 그 결과를 확인합니다.
- 자동 확장 정책과 구성을 확인합니다.
모니터링과 디버깅 도구
CloudWatch Container Insights 사용하기
포괄적인 모니터링을 위해 Container Insights를 활성화합니다.
aws ecs put-account-setting --name containerInsights --value enabled
Container Insights가 제공하는 것:
- CPU, 메모리, 디스크, 네트워크 메트릭
- 성능 모니터링 대시보드
- 로그 상관관계와 분석
- 이상 탐지(anomaly detection)
더 알아보기 (Learn more)
- Amazon ECS Express Mode 서비스에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.