AWS CloudFormation에서 Amazon ECS 서비스가 안정화되지 않는 현상을 방지하려면 어떻게 해야 합니까?

3분 분량
0

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 상태로 유지되며 업데이트될 수 없습니다.

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

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

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

해결 방법

리소스 생성 확인

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.    이벤트(Events) 탭을 선택하고 리소스가 생성되고 있는지 확인합니다.

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

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.    탐색 창에서 [클러스터(Clusters)]를 선택한 다음, 생성한 Amazon ECS 서비스가 포함된 클러스터를 선택하세요.

3.    [클러스터(Amazon )] 페이지에서 생성한 Amazon ECS 서비스가 포함된 클러스터를 선택합니다.

4.    선택한 클러스터에 대한 페이지에서 [서비스 이름(Service Name)] 열에서 서비스를 선택합니다.

5.    [이벤트(Events)] 탭을 선택한 다음, [업데이트(Update)]를 선택하세요.

6.    [서비스 구성(Configure service)] 페이지에서 [태스크 수(Number of tasks)]에 0을 입력합니다.

7.    [다음 단계(Next step)]를 선택하여 [서비스 업데이트(Update Service)] 마법사의 끝까지 단계별로 이동한 다음 [서비스 업데이트(Update Service)]를 선택합니다.

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

중요: 기본 태스크로 문제를 해결한 후 AWS CloudFormation 스택을 Amazon ECS 서비스 속성과 동기화하려면, 원하는 수(DesiredCount)를 템플릿의 원래 값으로 직접 변경해야 합니다.


관련 정보

서비스 업데이트하기

update-service

services-stable

AWS 공식
AWS 공식업데이트됨 3년 전