AWS CloudFormation에서 Amazon ECS 서비스가 안정화에 실패하지 않도록 하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 29일

Amazon Elastic Container Service(ECS) 서비스가 AWS CloudFormation에서 안정화되지 않습니다. "Service arn:aws:ecs:us-east-accountID:service/ServiceName did not stabilize."라는 오류가 나타납니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon ECS에서 생성된 서비스가 AWS CloudFormation 템플릿에서 지정된 상태가 아닌 경우 이는 안정화에 실패합니다. 서비스가 원하는 태스크 정의로 원하는 수의 태스크를 시작했는지 확인하기 위해 AWS CloudFormation은 여러 차례 DescribeService API 호출을 수행합니다. 이러한 호출은 원하는 상태가 충족될 때까지 서비스 상태를 확인합니다. 해당 호출 프로세스는 최대 3시간까지 걸릴 수 있습니다. 그리고 AWS CloudFormation이 시간 초과하면 "Service ARN did not stabilize"라는 메시지를 반환합니다. AWS CloudFormation이 서비스 상태를 확인하는 동안 서비스가 포함된 스택은 CREATE_IN_PROGRESS 또는 UPDATE_IN_PROGRESS 상태로 유지되며 업데이트될 수 없습니다.

ECS 서비스 태스크의 기본 문제를 즉시 해결할 수 없고 DescribeService API 호출이 시간 초과할 때까지 기다리지 않으려면, AWS CloudFormation의 ECS 서비스 리소스 상태를 CREATE_COMPLETE 상태로 수동으로 강제 설정할 수 있습니다. 이 작업을 위해서는 Amazon ECS 콘솔에서 원하는 서비스의 수를 0으로 수동 설정하여 실행 중인 태스크를 중지하십시오. 그러면 태스크의 수가 원하는 수인 0과 같기 때문에 AWS CloudFormation은 업데이트를 성공한 것으로 간주합니다.

중요: 프로덕션 서비스에는 AWS CloudFormation을 CREATE_COMPLETE 상태로 수동 강제 실행하지 않는 것이 좋습니다. 모든 태스크가 중지되고 이러한 작업으로 인해 제작 중단이 초래될 수 있기 때문입니다.

​해결 방법

리소스 생성 확인

1.    AWS CloudFormation 템플릿에서 AWS:: ECS:: Service 리소스를 생성하십시오. 다음 예제를 참조하십시오.

Resources:           
ECSServiceA:
 Type: AWS::ECS::Service
Properties:
  DesiredCount: 1
  Cluster: awsExampleECSCluster
  LaunchType: EC2
  ServiceName: "MyNginxService2"
  TaskDefinition: NginxTask:1

2.    AWS CloudFormation 콘솔을 열고 스택을 선택하십시오.

3.    이벤트 탭을 선택하고 리소스가 생성되고 있는지 확인하십시오.

원하는 서비스의 수 업데이트

AWS 명령줄 인터페이스(CLI) 또는 Amazon ECS 콘솔을 사용하여 원하는 서비스의 수를 원래 값으로 업데이트할 수 있습니다.

AWS CLI:

1.    서비스를 설명하고 이벤트 서비스의 목록을 나열하려면 다음 명령을 실행하십시오.

aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2

2.    원하는 서비스의 수를 업데이트하려면 다음 명령을 실행하십시오.

aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0

3.    -desired-count를 사용자의 원래 값으로 업데이트하십시오.

Amazon ECS 콘솔:

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 클러스터를 선택한 다음, 생성한 ECS 서비스가 포함된 클러스터를 선택하십시오.

3.    이벤트 탭을 선택한 다음, 업데이트를 선택하십시오.

4.    태스크 수0을 입력하십시오.

이제 서비스는 안정된 상태에 도달하고 AWS CloudFormation의 ECS 서비스 리소스를 CREATE_COMPLETE 또는 UPDATE_COMPLETE으로 전환합니다.

5.    태스크 수에 원래 값을 입력하십시오.

참고: 기본 태스크로 문제를 해결한 후 AWS CloudFormation 스택을 ECS 서비스 속성과 동기화하려면, 템플릿별로 원하는 수를 수동으로 원래 값으로 변경해야 합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?