Amazon ECS가 클러스터를 관리하도록 역할 사용하기

Amazon ECS가 클러스터를 관리하도록 역할 사용하기

Amazon ECS가 서비스 연결 역할(service-linked role)을 사용해 클러스터를 관리하는 방법과 역할 생성·편집·삭제에 대해 알아봐요.

출처: 문서

본문

Amazon Elastic Container Service는 AWS Identity and Access Management (IAM) service-linked roles를 사용해요. service-linked role은 Amazon ECS에 직접 연결되는 고유한 유형의 IAM 역할이에요. Service-linked roles는 Amazon ECS가 미리 정의하며 서비스가 사용자를 대신해 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함해요. service-linked role은 필요한 권한을 수동으로 추가할 필요가 없으므로 Amazon ECS 설정을 더 쉽게 만들어요.

Amazon ECS는 자체 service-linked roles의 권한을 정의하며, 달리 정의되지 않는 한 오직 Amazon ECS만 그 역할을 가정할 수 있어요. 정의된 권한은 신뢰 정책(trust policy)과 권한 정책(permissions policy)을 포함하며, 그 권한 정책은 다른 IAM 엔터티에 연결할 수 없어요. 관련 리소스를 먼저 삭제한 후에만 service-linked role을 삭제할 수 있어요. 이는 리소스에 접근할 권한을 실수로 제거할 수 없으므로 Amazon ECS 리소스를 보호해요.

service-linked roles를 지원하는 다른 서비스에 대한 내용은 AWS services that work with IAM에서 Service-linked roles 열에 Yes가 있는 서비스를 찾아보세요. 링크가 있는 Yes를 선택하면 해당 서비스의 service-linked role 문서를 볼 수 있어요.

Amazon ECS의 Service-linked 역할 권한

Amazon ECS는 AWSServiceRoleForECS라는 service-linked role을 사용해 Amazon ECS가 클러스터를 관리할 수 있게 해요.

AWSServiceRoleForECS service-linked role은 다음 서비스가 역할을 가정하도록 신뢰해요:

  • ecs.amazonaws.com

AmazonECSServiceRolePolicy라는 역할 권한 정책은 Amazon ECS가 지정된 리소스에서 다음 작업을 완료할 수 있게 해요:

  • Action - Amazon ECS 태스크에 awsvpc 네트워크 모드를 사용할 때 Amazon ECS는 태스크와 연결된 탄력적 네트워크 인터페이스의 수명 주기를 관리해요. 여기에는 Amazon ECS가 탄력적 네트워크 인터페이스에 추가하는 태그도 포함돼요.
  • Action - Amazon ECS 서비스와 로드 밸런서를 사용할 때 Amazon ECS는 리소스를 로드 밸런서에 등록·등록 취소하는 것을 관리해요.
  • Action - Amazon ECS 서비스 검색을 사용할 때 Amazon ECS는 서비스 검색이 작동하는 데 필요한 Route 53과 AWS Cloud Map 리소스를 관리해요.
  • Action - Amazon ECS 서비스 자동 확장을 사용할 때 Amazon ECS는 필요한 Auto Scaling 리소스를 관리해요.
  • Action - Amazon ECS는 Amazon ECS 리소스 모니터링을 돕는 CloudWatch 알람과 로그 스트림을 만들고 관리해요.
  • Action - Amazon ECS Exec을 사용할 때 Amazon ECS는 태스크에 Amazon ECS Exec 세션을 시작하는 데 필요한 권한을 관리해요.
  • Action - Amazon ECS Service Connect를 사용할 때 Amazon ECS는 이 기능을 사용하는 데 필요한 AWS Cloud Map 리소스를 관리해요.
  • Action - Amazon ECS capacity provider를 사용할 때 Amazon ECS는 Auto Scaling group과 그 Amazon EC2 인스턴스를 수정하는 데 필요한 권한을 관리해요.
  • Action - Amazon ECS는 Amazon ECS가 관리하는 서비스의 AWS Cloud Map 서비스 속성을 업데이트할 수 있어요.
  • Action - Amazon ECS는 태스크를 시작·중지할 때 Amazon EC2 ENI 프로비저닝과 프로비저닝 해제를 호출할 수 있어요.
  • Action - Amazon ECS는 Event Windows와 연결된 서비스와 클러스터에 대한 Amazon EC2 Event Windows를 가져올 수 있어요.

사용자, 그룹, 역할이 service-linked role을 생성·편집·삭제할 수 있도록 권한을 구성해야 해요. 자세한 내용은 IAM User Guide의 Service-linked role permissions 참고.

Amazon ECS용 Service-linked 역할 생성

service-linked role을 수동으로 만들 필요는 없어요. AWS Management Console, AWS CLI, AWS API에서 클러스터를 만들거나 서비스를 만들·업데이트할 때 Amazon ECS가 service-linked role을 생성해요.

중요 — 이 service-linked role이 지원하는 기능을 사용하는 다른 서비스에서 작업을 완료했다면 이 역할이 계정에 나타날 수 있어요. 2017년 1월 1일 전에, service-linked roles를 지원하기 시작했을 때 Amazon ECS 서비스를 사용하고 있었다면 Amazon ECS가 계정에 AWSServiceRoleForECS 역할을 만들었을 거예요. 자세한 내용은 A new role appeared in my AWS account 참고.

IAM 콘솔을 사용해 AWSServiceRoleForECS 사용 사례로 service-linked role을 만들 수도 있어요. AWS CLI나 AWS API에서는 ecs.amazonaws.com 서비스 이름으로 IAM을 사용해 service-linked role을 만들어요. 자세한 내용은 IAM User Guide의 Creating a service-linked role 참고. 이 service-linked role을 삭제하면 같은 프로세스로 역할을 다시 만들 수 있어요. 클러스터를 만들거나 서비스를 만들·업데이트할 때 Amazon ECS가 service-linked role을 다시 생성해요.

Amazon ECS용 Service-linked 역할 편집

Amazon ECS는 AWSServiceRoleForECS service-linked role의 편집을 허용하지 않아요. service-linked role을 만든 후에는 다양한 엔터티가 역할을 참조할 수 있으므로 역할 이름을 변경할 수 없어요. 그러나 IAM을 사용해 역할의 설명을 편집할 수는 있어요. 자세한 내용은 IAM User Guide의 Editing a service-linked role 참고.

Amazon ECS용 Service-linked 역할 삭제

AWSServiceRoleForECS 역할을 수동으로 삭제할 필요는 없어요. AWS Management Console, AWS CLI, AWS API에서 모든 리전의 클러스터를 삭제할 때 Amazon ECS가 리소스를 정리하고 service-linked role을 삭제해요.

service-linked role이 필요한 기능이나 서비스를 더 이상 사용할 필요가 없다면 그 역할을 삭제할 것을 권장해요. 그래야 적극적으로 모니터링·유지 관리되지 않는 미사용 엔터티를 두지 않아요. 그러나 service-linked role을 수동으로 삭제하려면 먼저 정리해야 해요.

Service-linked 역할 정리

IAM을 사용해 service-linked role을 삭제하려면 먼저 역할이 사용하는 모든 리소스를 삭제해야 해요.

참고 — 리소스를 삭제하려고 할 때 Amazon ECS 서비스가 역할을 사용 중이면 삭제가 실패할 수 있어요. 그런 경우 몇 분 기다렸다가 작업을 다시 시도하세요.

AWSServiceRoleForECS가 사용하는 Amazon ECS 리소스를 삭제하려면 (콘솔):

  1. 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 Updating an Amazon ECS service와 Deleting an Amazon ECS service using the console 참고.
  2. 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소(deregister)해요. 자세한 내용은 Deregistering an Amazon ECS container instance 참고.
  3. 모든 리전의 모든 Amazon ECS 클러스터를 삭제해요. 자세한 내용은 Deleting an Amazon ECS cluster 참고.

AWSServiceRoleForECS가 사용하는 Amazon ECS 리소스를 삭제하려면 (AWS CLI):

  1. 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 AWS Command Line Interface Reference의 update-service와 delete-service 참고.
  2. 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소해요. 자세한 내용은 deregister-container-instance 참고.
  3. 모든 리전의 모든 Amazon ECS 클러스터를 삭제해요. 자세한 내용은 delete-cluster 참고.

AWSServiceRoleForECS가 사용하는 Amazon ECS 리소스를 삭제하려면 (API):

  1. 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 Amazon ECS API Reference의 UpdateService와 DeleteService 참고.
  2. 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소해요. 자세한 내용은 DeregisterContainerInstance 참고.
  3. 모든 리전의 모든 Amazon ECS 클러스터를 삭제해요. 자세한 내용은 DeleteCluster 참고.

Service-linked 역할 수동 삭제

IAM 콘솔, AWS CLI 또는 AWS API를 사용해 AWSServiceRoleForECS service-linked role을 삭제해요. 자세한 내용은 IAM User Guide의 Deleting a service-linked role 참고.

Amazon ECS service-linked roles 지원 리전

Amazon ECS는 서비스를 사용할 수 있는 모든 리전에서 service-linked roles 사용을 지원해요. 자세한 내용은 AWS Regions and endpoints 참고.

더 알아보기 (Learn more)