Amazon ECS 외부 인스턴스 등록 해제

Amazon ECS 외부 인스턴스 등록 해제

인스턴스 사용을 마친 후에는 Amazon ECS와 AWS Systems Manager 모두에서 인스턴스를 등록 해제하는 것을 권장해요. 등록 해제 후에는 외부 인스턴스가 새 태스크를 더 이상 받을 수 없어요. 등록 해제할 때 컨테이너 인스턴스에서 실행 중인 태스크가 있다면, 그 태스크들은 다른 방법으로 중지될 때까지 계속 실행돼요. 하지만 이러한 태스크들은 더 이상 Amazon ECS가 모니터링하거나 계산하지 않아요. 외부 인스턴스의 태스크가 Amazon ECS 서비스의 일부라면, 서비스 스케줄러는 가능하면 다른 인스턴스에서 해당 태스크의 다른 복사본을 시작해요. 인스턴스를 등록 해제한 후에는 인스턴스에 남아 있는 AWS 리소스를 정리하고 새 클러스터에 등록할 수 있어요.

출처: 문서

본문

절차 (Procedure)

AWS Management Console

  1. 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
  2. 탐색 모음에서 외부 인스턴스가 등록된 리전을 선택합니다.
  3. 탐색 창에서 Clusters를 선택하고 외부 인스턴스를 호스팅하는 클러스터를 선택합니다.
  4. Cluster: name 페이지에서 Infrastructure 탭을 선택합니다.
  5. Container instances 아래에서 등록 해제할 외부 인스턴스 ID를 선택합니다. 컨테이너 인스턴스 상세 페이지로 리디렉션됩니다.
  6. Container Instance: id 페이지에서 Deregister를 선택합니다.
  7. 등록 해제 메시지를 검토합니다. Deregister from AWS Systems Manager를 선택하면 외부 인스턴스를 Systems Manager 관리형 인스턴스로도 등록 해제합니다. Deregister를 선택합니다.
    • 참고: Systems Manager 콘솔에서 외부 인스턴스를 Systems Manager 관리형 인스턴스로 등록 해제할 수 있어요. 지침은 AWS Systems Manager User Guide의 Deregistering managed nodes in a hybrid and multicloud environment를 참고하세요.
  8. 인스턴스를 등록 해제한 후 온프레미스 서버 또는 VM에서 AWS 리소스를 정리합니다.
운영 체제 단계
Linux 1. 인스턴스에서 Amazon ECS 컨테이너 에이전트와 SSM 에이전트 서비스를 중지합니다. sudo systemctl stop ecs amazon-ssm-agent
2. Amazon ECS와 Systems Manager 패키지를 제거합니다. CentOS 7, CentOS 8, RHEL 7의 경우: sudo yum remove -y amazon-ecs-init amazon-ssm-agent / SUSE Enterprise Server 15의 경우: sudo zypper remove -y amazon-ecs-init amazon-ssm-agent / Debian과 Ubuntu의 경우: sudo apt remove -y amazon-ecs-init amazon-ssm-agent
3. 남은 디렉터리를 제거합니다. sudo rm -rf /var/lib/ecs /etc/ecs /var/lib/amazon/ssm /var/log/ecs /var/log/amazon/ssm
Windows 1. 인스턴스에서 Amazon ECS 컨테이너 에이전트와 SSM 에이전트 서비스를 중지합니다. Stop-Service AmazonECS 그리고 Stop-Service AmazonSSMAgent
2. Amazon ECS 패키지를 제거합니다. .\ecs-anywhere-install.ps1 -Uninstall

AWS CLI

컨테이너 인스턴스를 등록 해제하려면 인스턴스 ID와 컨테이너 인스턴스 ARN이 필요해요. 이 값이 없다면 다음 명령을 실행하세요.

  • 인스턴스 ID를 얻으려면 다음 명령을 실행하세요. 인스턴스 ID(instanceId)를 사용해 컨테이너 인스턴스 ARN(containerInstanceArn)을 얻어요.
instanceId=$(aws ssm describe-instance-information --region "{{ region }}" | jq ".InstanceInformationList[] |select(.IPAddress==\"{{ IPv4 Address }}\") | .InstanceId" | tr -d'"'
  • 다음 명령을 실행하세요. 컨테이너 인스턴스를 등록 해제하는 명령(deregister-container-instance)의 파라미터로 containerInstanceArn을 사용해요.
instances=$(aws ecs list-container-instances --cluster "{{ cluster }}" --region "{{ region }}" | jq -c '.containerInstanceArns')
containerInstanceArn=$(aws ecs describe-container-instances --cluster "{{ cluster }}" --region "{{ region }}" --container-instances $instances | jq ".containerInstances[] | select(.ec2InstanceId==\"{{ instanceId }}\") | .containerInstanceArn" | tr -d '"')
  • 인스턴스를 드레이닝하려면 다음 명령을 실행하세요.
aws ecs update-container-instances-state --cluster "{{ cluster }}" --region "{{ region }}" --container-instances "{{ containerInstanceArn }}" --status DRAINING
  • 컨테이너 인스턴스가 드레이닝을 마친 후 다음 명령을 실행해 인스턴스를 등록 해제하세요.
aws ecs deregister-container-instance --cluster "{{ cluster }}" --region "{{ region }}" --container-instance "{{ containerInstanceArn }}"
  • SSM에서 컨테이너 인스턴스를 제거하려면 다음 명령을 실행하세요.
aws ssm deregister-managed-instance --region "{{ region }}" --instance-id "{{ instanceId }}"
  • 인스턴스를 등록 해제한 후 온프레미스 서버 또는 VM에서 AWS 리소스를 정리합니다.
운영 체제 단계
Linux 1. 인스턴스에서 Amazon ECS 컨테이너 에이전트와 SSM 에이전트 서비스를 중지합니다. sudo systemctl stop ecs amazon-ssm-agent
2. Amazon ECS와 Systems Manager 패키지를 제거합니다. sudo (yum/apt/zypper) remove amazon-ecs-init amazon-ssm-agent
3. 남은 디렉터리를 제거합니다. sudo rm -rf /var/lib/ecs /etc/ecs /var/lib/amazon/ssm /var/log/ecs /var/log/amazon/ssm
Windows 1. 인스턴스에서 Amazon ECS 컨테이너 에이전트와 SSM 에이전트 서비스를 중지합니다. Stop-Service AmazonECS 그리고 Stop-Service AmazonSSMAgent
2. Amazon ECS 패키지를 제거합니다. .\ecs-anywhere-install.ps1 -Uninstall