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%가 그린 서비스 개정 태스크로 이동했습니다.
수명 주기 단계 범주
수명 주기 단계는 다음과 같은 두 가지 범주로 구분됩니다.
-
단일 간접 호출 단계 - 이 단계는 서비스 배포 중에 한 번만 간접 호출됩니다.
PRE_SCALE_UP
POST_SCALE_UP
POST_TEST_TRAFFIC_SHIFT
POST_PRODUCTION_TRAFFIC_SHIFT
-
반복 간접 호출 단계 - 롤백 작업이 수행되는 경우와 같이 서비스 배포 중에 이 단계는 여러 번 간접 호출될 수 있습니다.
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 |