CloudWatch 알람이 Amazon ECS 배포 실패를 감지하는 방법

CloudWatch 알람이 Amazon ECS 배포 실패를 감지하는 방법

지정된 CloudWatch 알람이 ALARM 상태가 되는 것을 Amazon ECS가 감지하면 배포를 실패로 설정하도록 구성할 수 있습니다. 이 글에서는 배포 알람과 롤백 옵션 사용 방법을 알아봅니다.

출처: 문서

본문

지정된 CloudWatch 알람이 ALARM 상태가 되는 것을 Amazon ECS가 감지하면 배포를 실패로 설정하도록 구성할 수 있어요. 선택적으로 실패한 배포를 마지막 완료된 배포로 롤백하도록 구성할 수도 있습니다.

다음 create-service AWS CLI 예시는 롤백 옵션과 함께 배포 알람을 사용할 때 Linux 서비스를 만드는 방법을 보여줍니다.

aws ecs create-service \
     --service-name MyService \
     --deployment-controller type=ECS \
     --desired-count 3 \
     --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \
     --task-definition sample-fargate:1 \
     --launch-type FARGATE \
     --platform-family LINUX \
     --platform-version 1.4.0 \
     --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

서비스에 Amazon CloudWatch 알람 방법을 사용할 때 다음을 고려하세요.

  • 프로덕션 트래픽이 이동된 후 블루와 그린 서비스 개정이 동시에 실행되는 기간. Amazon ECS는 이 시간을 배포와 연결된 알람 구성에 따라 계산합니다. 이 값을 설정할 수 없습니다.
  • deploymentConfiguration 요청 파라미터에는 이제 alarms 데이터 타입이 포함됩니다. 알람 이름, 방법 사용 여부, 알람이 배포 실패를 나타낼 때 롤백을 시작할지 여부를 지정할 수 있어요. 자세한 내용은 Amazon Elastic Container Service API Reference의 CreateService 문서를 참고하세요.
  • DescribeServices 응답은 배포 상태, rolloutState, rolloutStateReason에 대한 인사이트를 제공합니다. 새 배포가 시작되면 롤아웃 상태는 IN_PROGRESS 상태로 시작합니다. 서비스가 안정 상태(steady state)에 도달하고 베이크 타임(bake time)이 완료되면 롤아웃 상태는 COMPLETED로 전환됩니다. 서비스가 안정 상태에 도달하지 못하고 알람이 ALARM 상태로 들어가면 배포는 FAILED 상태로 전환됩니다. FAILED 상태의 배포는 새 태스크를 시작하지 않습니다.
  • 시작되고 완료된 배포에 대해 Amazon ECS가 보내는 서비스 배포 상태 변경 이벤트 외에, Amazon ECS는 알람을 사용하는 배포가 실패할 때도 이벤트를 보냅니다. 이 이벤트는 배포가 실패한 이유 또는 롤백 때문에 배포가 시작되었는지에 대한 세부 정보를 제공합니다. 자세한 내용은 Amazon ECS 서비스 배포 상태 변경 이벤트 문서를 참고하세요.
  • 이전 배포가 실패하고 롤백이 켜져서 새 배포가 시작된 경우, 서비스 배포 상태 변경 이벤트의 reason 필드는 배포가 롤백 때문에 시작되었음을 나타냅니다.
  • 배포 서킷 브레이커와 Amazon CloudWatch 알람을 모두 사용해 실패를 감지한다면, 두 방법 중 하나의 기준이 충족되는 즉시 어느 쪽이든 배포 실패를 시작할 수 있어요. 롤백은 배포 실패를 시작한 방법에 대해 롤백 옵션을 사용할 때 발생합니다.
  • Amazon CloudWatch 알람은 롤링 업데이트(ECS) 배포 컨트롤러를 사용하는 Amazon ECS 서비스에서만 지원됩니다.
  • 이 옵션은 Amazon ECS 콘솔 또는 AWS CLI를 사용해 구성할 수 있습니다. 자세한 내용은 정의된 파라미터를 사용한 서비스 생성과 AWS Command Line Interface Reference의 create-service 문서를 참고하세요.
  • 배포 상태가 오랫동안 IN_PROGRESS로 유지되는 것을 볼 수 있습니다. 그 이유는 Amazon ECS가 활성 배포를 삭제할 때까지 상태를 변경하지 않기 때문이며, 이는 베이크 타임 이후에나 발생합니다. 알람 구성에 따라 배포는 알람을 사용하지 않을 때보다 몇 분 더 오래 걸리는 것처럼 보일 수 있습니다(새 기본 태스크 세트가 스케일 업되고 이전 배포가 스케일 다운되더라도). CloudFormation 시간 제한을 사용한다면 시간 제한을 늘리는 것을 고려하세요. 자세한 내용은 AWS CloudFormation 사용자 가이드의 템플릿에서 대기 조건 생성 문서를 참고하세요.
  • Amazon ECS는 DescribeAlarms를 호출해 알람을 폴링합니다. DescribeAlarms 호출은 계정에 연결된 CloudWatch 서비스 쿼터에 포함됩니다. 다른 AWS 서비스가 DescribeAlarms를 호출한다면 Amazon ECS의 알람 폴링에 영향을 줄 수 있어요. 예를 들어 다른 서비스가 쿼터에 도달할 만큼 많은 DescribeAlarms 호출을 하면 해당 서비스는 스로틀링되고 Amazon ECS도 스로틀링되어 알람을 폴링하지 못합니다. 스로틀링 기간 중에 알람이 생성되면 Amazon ECS가 알람을 놓칠 수 있고 롤백이 발생하지 않을 수 있습니다. 배포에 다른 영향은 없습니다. CloudWatch 서비스 쿼터에 대한 자세한 내용은 CloudWatch 사용자 가이드의 CloudWatch 서비스 쿼터 문서를 참고하세요.
  • 배포 시작 시 알람이 ALARM 상태라면 Amazon ECS는 해당 배포 기간 동안 알람을 모니터링하지 않습니다(알람 구성을 무시합니다). 이 동작은 초기 배포 실패를 수정하기 위해 새 배포를 시작하려는 경우를 다룹니다.

다음 알람 지표를 사용할 것을 권장합니다:

  • Application Load Balancer를 사용한다면 HTTPCode_ELB_5XX_Count와 HTTPCode_ELB_4XX_Count Application Load Balancer 지표를 사용하세요. 이 지표는 HTTP 급증을 확인합니다.

더 알아보기 (Learn more)

  • 배포 알람과 롤백에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.