Fargate 스케줄 작업을 수행하지 않는 경우가 있습니다.

3105 단어 AWSECSFargate
이른바 일정 임무
Amazon Event Bridge 스케줄러를 사용하여 ECS(Fargate) 작업을 정기적으로 수행하는 구조입니다.
[참조] https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/scheduled_tasks.html
결론
2021년 10월 현재 S3에서 환경 변수를 가져오기 위한 작업 정의를 설정한 작업 시작 시 작업 수행이 실패할 수 있습니다.
(향후 AWS 측에서 수정될 가능성이 있다.)
아직 조사할 여지가 있다
VPC 엔드포인트, NAT, 공용 IP 유무 등 환경에 따라 발생 빈도가 다를 수 있습니다.
디테일
원인을 하나하나 찾다.
RunTask 실행 확인
CloudTrail에서 RunTask 이벤트 확인
CloudTrail을 열면 각 API의 실행 내역을 확인할 수 있습니다.
콘솔 화면의 경우 이벤트 기록에서 이벤트 이름'RunTask'로 필터링합니다.
사건을 기록하면 임무 자체가 시작되었다는 것을 알 수 있다.

CloudWatch 메트릭으로 Invoocation 확인
EventBridge의 메트릭에 따라 일정 임무로 호출되었는지 확인합니다.
이것도 역시 인보케이션이 기록된 상황에서 작업 자체가 시작되었다.

로그에 작업 중지 사유 기록
이전에 프로그램이 실행되지 않은 원인을 발견하지 못했다.
그러나 스케줄러 프로그램은 절대 실행되지 않았다.
작업이 시작됐지만 프로그램이 실행되기 전에 멈췄을 수도 있다는 얘기다.
따라서 작업 중지 로그를 기록하는 CloudWatchLogs를 만듭니다.
CloudFormation에서 작업 중지 로그를 기록하는 메커니즘 구축
다음 CloudFormation 템플릿을 사용하여 메커니즘을 구성합니다.
https://github.com/aws-samples/amazon-ecs-stopped-tasks-cwlogs
아래의 보도도 참고해 주십시오.감사합니다!
https://dev.classmethod.jp/articles/tsnote-ecs-how-can-i-store-the-reason-for-stopping-ecs-tasks-in-cloudwatch-logs/
작업 중지 이유를 통해 오류 로그 확인
정지 로그가 기록돼 있으니 실제로 확인해야 한다.
그리하여... 하다
ResourceInitializationError: failed to download env files: file download command: non empty error stream: RequestCanceled: request context canceled caused by: context deadline exceeded
정지 이유stoppedReason를 통해 오류 정보를 확인했다.
작업을 시작할 때 S3에서 환경 변수를 가져오도록 설정하면 드물게 가져올 수 없는 경우가 발생할 수 있습니다.
컨트롤러 화면에서 작업이 정의된 곳은 여기입니다.

작업 정의 파일은 다음과 같은 부분을 포함합니다.
"containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "environmentFiles": [
        {
          "value": "arn:aws:s3:::xxxxxxxxxx/.env",
          "type": "s3"
        }
      ],

...

시험을 준비하다
2021년 10월 23일까지 다음 이슈를 발간해 후속 보도를 기대한다.
https://github.com/aws/aws-cli/issues/6470

좋은 웹페이지 즐겨찾기