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 리소스를 삭제하려면 (콘솔):
- 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 Updating an Amazon ECS service와 Deleting an Amazon ECS service using the console 참고.
- 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소(deregister)해요. 자세한 내용은 Deregistering an Amazon ECS container instance 참고.
- 모든 리전의 모든 Amazon ECS 클러스터를 삭제해요. 자세한 내용은 Deleting an Amazon ECS cluster 참고.
AWSServiceRoleForECS가 사용하는 Amazon ECS 리소스를 삭제하려면 (AWS CLI):
- 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 AWS Command Line Interface Reference의
update-service와delete-service참고. - 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소해요. 자세한 내용은
deregister-container-instance참고. - 모든 리전의 모든 Amazon ECS 클러스터를 삭제해요. 자세한 내용은
delete-cluster참고.
AWSServiceRoleForECS가 사용하는 Amazon ECS 리소스를 삭제하려면 (API):
- 모든 리전에서 모든 Amazon ECS 서비스를 desired count 0으로 축소한 후 서비스를 삭제해요. 자세한 내용은 Amazon ECS API Reference의
UpdateService와DeleteService참고. - 모든 리전의 모든 클러스터에서 모든 컨테이너 인스턴스를 강제로 등록 취소해요. 자세한 내용은
DeregisterContainerInstance참고. - 모든 리전의 모든 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 참고.