Amazon ECS 서비스 배포에 대한 수명 주기 후크 - Amazon Elastic Container Service

Amazon ECS 서비스 배포에 대한 수명 주기 후크

배포가 시작되면 수명 주기 단계가 진행됩니다. 이러한 단계는 IN_PROGRESS 또는 성공과 같은 상태일 수 있습니다. Amazon ECS가 사용자를 대신해 지정된 수명 주기 단계에서 실행하는 Lambda 함수인 수명 주기 후크를 사용할 수 있습니다. 함수는 다음 중 하나일 수 있습니다.

  • 15분 이내에 상태 확인을 검증하는 비동기 API.

  • 수명 주기 후크 완료를 평가하는 다른 비동기 프로세스를 시작하는 폴링 API.

함수 실행이 완료된 후 배포를 계속하려면 hookStatus를 반환해야 합니다. hookStatus가 반환되지 않거나 함수에 실패하면 배포가 롤백됩니다. 다음은 hookStatus 값입니다.

  • SUCCEEDED - 배포는 다음 수명 주기 단계로 계속 진행됨

  • FAILED - 배포는 마지막으로 성공한 배포로 롤백됩니다.

  • IN_PROGRESS - Amazon ECS는 짧은 시간 후에 함수를 다시 실행합니다. 기본적으로 30초 간격이지만 hookStatus와 함께 callBackDelay를 반환하여 이 값을 사용자 지정할 수 있습니다.

다음 예제에서는 사용자 지정 콜백 지연으로 hookStatus를 반환하는 방법을 보여줍니다. 이 예제에서 Amazon ECS는 기본 30초 대신 60초 후에 이 후크를 재시도합니다.

{ "hookStatus": "IN_PROGRESS", "callBackDelay": 60 }

롤백이 수행되면 Amazon ECS는 다음 수명 주기 단계에 대해 수명 주기 후크를 실행합니다.

  • PRODUCTION_TRAFFIC_SHIFT

  • TEST_TRAFFIC_SHIFT

수명 주기 페이로드

ECS 서비스 배포에 대한 수명 주기 후크를 구성하면 Amazon ECS는 배포 프로세스의 특정 단계에서 이 후크를 간접 호출합니다. 각 수명 주기 단계는 배포의 현재 상태에 대한 정보를 포함하는 JSON 페이로드를 제공합니다. 이 문서에서는 각 수명 주기 단계의 페이로드 구조를 설명합니다.

공통 페이로드 구조

모든 수명 주기 단계 페이로드는 다음과 같은 공통 필드를 포함합니다.

  • serviceArn - 서비스의 Amazon 리소스 이름(ARN).

  • targetServiceRevisionArn - 배포 중인 대상 서비스 개정의 ARN.

  • testTrafficWeights - 해당 테스트 트래픽 가중치 백분율에 대한 서비스 개정 ARN의 맵.

  • productionTrafficWeights - 해당 프로덕션 트래픽 가중치 백분율에 대한 서비스 개정 ARN의 맵.

수명 주기 단계 페이로드

RECONCILE_SERVICE

이 단계는 서비스가 조정될 때 배포 프로세스 시작 시점에 나타납니다. 다음은 이 수명 주기 단계의 페이로드 예제를 보여줍니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

이 단계에서 기대 사항:

  • 기본 태스크 세트 규모가 0%임

PRE_SCALE_UP

이 단계는 새 태스크가 스케일 업되기 전에 나타납니다. 다음은 이 수명 주기 단계의 페이로드 예제를 보여줍니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

이 단계에서 기대 사항:

  • 그린 서비스 개정 태스크 규모가 0%임

POST_SCALE_UP

이 단계는 새 태스크가 스케일 업되고 정상 상태가 된 후에 나타납니다. 다음은 이 수명 주기 단계의 페이로드 예제를 보여줍니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

이 단계에서 기대 사항:

  • 그린 서비스 개정 태스크 규모가 100%임

  • 그린 서비스 개정의 태스크가 정상 상태임

TEST_TRAFFIC_SHIFT

이 단계는 테스트 트래픽이 그린 서비스 개정 태스크로 전환될 때 나타납니다.

다음은 이 수명 주기 단계의 페이로드 예제를 보여줍니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 }, "productionTrafficWeights": {} }

이 단계에서 기대 사항:

  • 테스트 트래픽이 그린 서비스 개정 태스크로 이동하는 중입니다.

POST_TEST_TRAFFIC_SHIFT

이 단계는 테스트 트래픽이 새 태스크로 완전히 전환된 후에 나타납니다.

다음은 이 수명 주기 단계의 페이로드 예제를 보여줍니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

이 단계에서 기대 사항:

  • 테스트 트래픽의 100%가 그린 서비스 개정 태스크로 이동했습니다.

PRODUCTION_TRAFFIC_SHIFT

이 단계는 프로덕션 트래픽이 그린 서비스 개정 태스크로 전환될 때 나타납니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": { "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100, "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0 } }

이 단계에서 기대 사항:

  • 프로덕션 트래픽이 그린 서비스 개정으로 이동하는 중입니다.

POST_PRODUCTION_TRAFFIC_SHIFT

이 단계는 프로덕션 트래픽이 그린 서비스 개정 태스크로 완전히 전환된 후에 나타납니다.

{ "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService", "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892", "testTrafficWeights": {}, "productionTrafficWeights": {} }

이 단계에서 기대 사항:

  • 프로덕션 트래픽의 100%가 그린 서비스 개정 태스크로 이동했습니다.

수명 주기 단계 범주

수명 주기 단계는 다음과 같은 두 가지 범주로 구분됩니다.

  1. 단일 간접 호출 단계 - 이 단계는 서비스 배포 중에 한 번만 간접 호출됩니다.

    • PRE_SCALE_UP

    • POST_SCALE_UP

    • POST_TEST_TRAFFIC_SHIFT

    • POST_PRODUCTION_TRAFFIC_SHIFT

  2. 반복 간접 호출 단계 - 롤백 작업이 수행되는 경우와 같이 서비스 배포 중에 이 단계는 여러 번 간접 호출될 수 있습니다.

    • TEST_TRAFFIC_SHIFT

    • PRODUCTION_TRAFFIC_SHIFT

수명 주기 후크 중 배포 상태

수명 주기 후크가 실행되는 동안 배포 상태는 모든 수명 주기 단계에서 IN_PROGRESS입니다.

수명 주기 단계 배포 상태
RECONCILE_SERVICE IN_PROGRESS
PRE_SCALE_UP IN_PROGRESS
POST_SCALE_UP IN_PROGRESS
TEST_TRAFFIC_SHIFT IN_PROGRESS
POST_TEST_TRAFFIC_SHIFT IN_PROGRESS
PRODUCTION_TRAFFIC_SHIFT IN_PROGRESS
POST_PRODUCTION_TRAFFIC_SHIFT IN_PROGRESS