Amazon ECS의 예약된 태스크와 관련된 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 3월 31일

Amazon Elastic Container Service(Amazon ECS) 태스크가 주기적으로 실행되도록 예약했습니다. 하지만 Amazon ECS 태스크가 트리거되지 않습니다. 클러스터에서 실행 로그나 태스크 기록을 가져올 수 없습니다.

해결 방법

예약된 Amazon ECS 태스크를 사용하는 경우, Amazon CloudWatch Events는 RunTask API를 Amazon ECS에 호출하여 사용자를 대신하여 태스크를 실행합니다.

예약된 Amazon ECS 태스크는 다음과 같은 이유로 호출되지 않을 수 있습니다.

  • Amazon EventBridge 시간 또는 cron 표현식이 잘못 구성되었습니다.
  • EventBridge 규칙이 대상을 호출하지 않습니다.
  • RunTask API를 실행하지 못했습니다.
  • 애플리케이션 문제 또는 리소스 제약으로 인해 컨테이너가 종료됩니다.

EventBridge cron 표현식이 잘못 구성되었는지 확인

EventBridge cron 표현식을 가져오려면 다음 AWS Command Line Interface(AWS CLI) 명령을 실행합니다.

$ aws events describe-rule --name "example-rule" --region example-region

명령의 출력에서, ScheduleExpression 파라미터에서 구성된 EventBridge cron 표현식을 확인할 수 있습니다. 규칙에 대한 일정을 UTC+0 표준 시간대로 설정해야 합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

규칙에서 대상을 호출하지 않는지 확인

EventBridge에서 생성한 Amazon CloudWatch 지표를 사용하여 규칙 성능을 확인합니다. Invocations 데이터 포인트는 규칙에 의해 대상이 호출되었음을 나타냅니다. FailedInvocations 데이터 포인트가 있으면 대상을 호출하는 데 문제가 있는 것입니다. FailedInvocations는 영구적인 실패를 나타내며 잘못된 권한 또는 대상의 잘못된 구성으로 인해 발생할 수 있습니다.

EventBridge 규칙에 대한 CloudWatch 지표를 검토하려면 다음을 수행합니다.

  1. CloudWatch 콘솔을 엽니다.
  2. 탐색 창에서 [지표]를 선택한 다음 [모든 지표]를 선택합니다.
  3. [이벤트]를 선택합니다.
  4. [규칙 이름별]을 선택합니다.
  5. ECS 태스크를 실행하도록 구성된 EventBridge 규칙에 대해 TriggerRules, InvocationsFailedInvocations(사용 가능한 경우) 지표를 선택합니다.
  6. [그래프로 표시된 지표] 탭을 선택합니다.
  7. 나열된 모든 지표에 대해 통계의 [SUM]을 선택합니다.

FailedInvocations 데이터 포인트가 있는 경우 부적절한 대상 권한과 관련된 문제가 있을 수 있습니다. EventBridge가 ECS 태스크를 호출할 수 있는 액세스 권한이 있는지 확인해야 합니다. EventBridge AWS Identity and Access Management(IAM) 역할에 필요한 권한이 있는지 확인합니다. 자세한 내용은 Amazon ECS CloudWatch Events IAM 역할을 참조하세요.

RunTask 작업을 실행하지 못했는지 확인

RunTask API를 실행하지 못했는지 확인하려면 예약된 ECS 태스크가 호출될 것으로 예상되는 시간 범위 내의 AWS CloudTrail 이벤트 기록에서 RunTask를 검색합니다.

RunTask 작업이 실패하여 예약된 태스크가 호출되지 않았는지 확인하려면 다음을 수행합니다.

  1. AWS CloudTrail 콘솔을 엽니다.
  2. 탐색 창에서 [이벤트 기록]을 선택합니다.
  3. 이벤트 기록 페이지의 [속성 조회]에서 [이벤트 이름]을 선택합니다.
  4. [이벤트 이름 입력]에 RunTask를 입력합니다.
  5. 예약된 ECS 태스크가 실행될 것으로 예상되는 시간을 기준으로 시간 범위 필터에서 시간 범위를 선택합니다.
    참고: 시간 범위에 대한 사전 설정 값은 30분, 1시간, 3시간 및 12시간입니다. 사용자 지정 시간 범위를 지정하려면 [사용자 정의] 를 선택합니다.
  6. 결과 목록에서 확인하려는 이벤트를 선택합니다.
  7. 세부 정보 페이지에서 [이벤트 레코드]로 스크롤하여 JSON 이벤트 레코드를 봅니다.
  8. JSON 이벤트 레코드에서 errorMessage 또는 responseElements.failures.reason 요소를 찾습니다.
    JSON 이벤트 레코드의 이러한 요소는 예약된 ECS 태스크가 호출되지 않는 이유를 표시합니다.

RunTask API 실패 이유와 그 원인에 대한 예는 API 실패 이유를 참조하세요.

태스크가 실행된 후 컨테이너가 종료되었는지 확인

Amazon ECS 태스크는 애플리케이션 문제 또는 리소스 제약으로 인해 태스크가 성공적으로 실행된 후에도 중지될 수 있습니다. 자세한 내용은 Amazon ECS 태스크에서 컨테이너가 종료되는 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.