본문 바로가기
Public Cloud/AWS - Experience

[AWS] ECS 실행중인 Task에 Tag 지정(tag propagation)하기

by ymkim 2025. 3. 10.

AWS 비용 최적화를 진행하는 과정에서 ECS Task에 태그를 추가해야 하는 상황이 존재하였다. ECS의 Cluster, Service, Task Definition의 경우 콘솔에서 직접 태그를 설정할 수 있지만, 동적으로 실행되는 Task의 경우 CLI를 통해 태그 전파(Tag Propagation)를 설정해야 했다. 이번 글에서는 이러한 태그 지정 방식에 대해 간략히 살펴보겠다.

✅ 01. ECS Service 생성 콘솔 접근

ecs service tag 설정

ECS Cluster > ECS Service 선택 > 생성 클릭

ECS Service를 생성하는 경우 기본적으로 태그 전파(Propagation) 옵션을 설정할 수 있다. 이미지와 같이 Amazon ECS 관리형 태그 켜기 설정을 True로 변경하고 전파할 리소스를 지정하면 된다. 또한 아래에서 설명하겠지만 전파를 원하는 리소스의 종류는 Service, Task Definition, 전파하지않음(NONE)이 존재한다.

01-1. ECS 태그 전파 옵션

  1. SERVICE: ECS Service의 태그를 Task로 자동 복사
  2. TASK_DEFINITION: Task Definition의 태그를 Task로 자동 복사
  3. NONE: 태그 자동 전파 안 함(기본값)

필자의 경우 초기에 ECS Service를 생성할 때 태그 전파 옵션을 설정하지 않았다.

그렇기에 'NONE'로 출력이 될 것이며, AWS CLI를 통해 태그 전파 옵션을 설정하는 과정을 진행 해보자.

01-2. ECS Service 태그 전파 옵션 확인

# ECS 태그 전파 옵션 확인
aws ecs describe-services \
--cluster <ecs cluster name> \
--services <ecs service name> \
--region <aws region> \
--query 'services[*].propagateTags' --output table

------------------
|DescribeServices|
+----------------+
|  NONE          |
+----------------+

위 옵션은 ECS Service의 propagateTags 옵션을 확인하는 AWS CLI다. propagateTags란 ECS 서비스의 태그 전파(Tag Propagation) 여부가 어떻게 되어있는지를 확인하는 명령어로 설정에 따라 NONE, SERVICE, TASK_DEFINITIONS로 출력이 될 것이다. 다음으로 “ECS 관리형 태그 켜기” 옵션이 활성화 되어 있는지 확인해보자.

01-3. ECS Service 관리형 태그 켜기 옵션 여부 확인

# ECS 관리형 태그 켜기 옵션 True/False 여부 확인
aws ecs describe-services \
--cluster <ecs cluster name> \
--services <ecs service name> \
--region <aws region> \
--query 'services[*].enableECSManagedTags' --output table

------------------
|DescribeServices|
+----------------+
|  True          |
+----------------+

ECS 관리형 태그를 활성화(True)하면 기본적으로 아래와 같은 태그가 ECS 리소스에 자동으로 할당된다. 이 옵션은 AWS 비용 및 사용 보고에서 작업을 쉽게 식별하는 데 활용된다. 현재 관리형 태그가 활성화(True)로 설정되어 있음을 확인할 수 있다. 따라서, ECS 관리형 태그 옵션(—enable-ecs-managed-tags)을 업데이트할 필요는 없다. 이제 태그 전파(propagateTags) 옵션을 활성화하여 태그가 Task에 자동으로 전파되도록 설정해보자.

  • ecs:clusterName: my-cluster
  • ecs:serviceName: my-service
  • ecs:taskDefinition: my-task-1
# ECS 관리형 태그 활성화 CLI
aws ecs update-service \
--service <servicename> \
--region <region> \
--cluster <clustername> \
--enable-ecs-managed-tags

ECS 관리형 태그 활성화가 FALSE로 지정되어 있는 경우 사용.

01-4. ECS Service 태그 전파 옵션 업데이트

# ✅ Task_Definition의 태그를 전파
#aws ecs update-service --no-cli-pager \
#--service <servicename> \
#--region <region> \
#--cluster <clustername> \
#--propagate-tags TASK_DEFINITION|SERVICE|NONE

# ECS 태그 전파 옵션 업데이트
aws ecs update-service --no-cli-pager \
--service <servicename> \
--region <region> \
--cluster <clustername> \
--propagate-tags TASK_DEFINITION

필자의 경우 ECS Service가 아닌 TASK_DEFINITION의 Tag를 실행중인 Task가 전파(inheritance) 받기를 원했다. 그렇기에 기존 ECS 업데이트시 —propagate-tags에 SERVICE가 아닌 TASK_DEFINITION을 지정하였다. 이 부분은 사용하고자 하는 목적에 따라 구분하여 사용하면 될 것 같다. 그렇다면 이제 ECS Service를 업데이트 수행하면 Task에 Tag가 적용될 것이다.

99. 참고 자료

 

Amazon ECS 작업의 태깅 문제 해결

Amazon Elastic Container Service(Amazon ECS) 작업 태그 관련 문제를 해결하고 싶습니다.

repost.aws

 

ecs tag propagation

- 개요 AWS resouce tag관리를 위해 Task Definition이나 Service의 Tag를 Task도 상속 - 방법 (AWS Web Console) ECS Service "enableECSManagedTags": "True" "propagateTags": "Task Definition" "Tags xxxx" - 방법 (CLI) aws ecs describe-services --

happyengine.tistory.com