Amazon EC2 리소스에 태그 지정하기
Amazon EC2 리소스에 태그 지정하기
인스턴스, 이미지 및 기타 Amazon EC2 리소스를 관리하는 데 도움이 되도록 각 리소스에 tags 형태로 자체 메타데이터를 할당할 수 있어요. 이 절에서 태그의 기본과 태그 제한, 태그를 만드는 방법을 살펴볼게요.
출처: 문서
본문
인스턴스, 이미지 및 기타 Amazon EC2 리소스를 관리하는 데 도움이 되도록 각 리소스에 tags 형태로 자체 메타데이터를 할당할 수 있어요. 태그를 사용하면 목적, 소유자, 환경별로 AWS 리소스를 다양한 방식으로 분류할 수 있어요. 같은 유형의 리소스가 많을 때 유용한데, 할당한 태그를 기반으로 특정 리소스를 빠르게 식별할 수 있거든요. 이 주제는 태그를 설명하고 만드는 방법을 보여줘요.
경고
태그 키와 그 값은 많은 API 호출로 반환돼요. DescribeTags에 대한 접근을 거부해도 다른 API가 반환하는 태그에 대한 접근을 자동으로 거부하지 않아요. 모범 사례로 태그에 민감한 데이터를 포함하지 않는 것을 권장해요.
태그 기본
태그는 AWS 리소스에 할당하는 레이블이에요. 각 태그는 key(키)와 선택적 value(값)로 구성되며, 둘 다 직접 정의해요.
태그를 사용하면 목적, 소유자, 환경별로 AWS 리소스를 다양한 방식으로 분류할 수 있어요. 예를 들어 계정의 Amazon EC2 인스턴스에 대해 각 인스턴스의 소유자와 스택 수준을 추적하는 데 도움이 되는 태그 집합을 정의할 수 있어요.
다음 다이어그램은 태그 지정이 어떻게 작동하는지 보여줘요. 이 예시에서는 각 인스턴스에 두 개의 태그를 할당했어요 — 키가 Owner인 태그 하나와 키가 Stack인 태그 하나. 각 태그에는 연결된 값도 있어요.
각 리소스 유형에 대해 요구 사항을 충족하는 태그 키 집합을 고안할 것을 권장해요. 일관된 태그 키 집합을 사용하면 리소스 관리가 더 쉬워져요. 추가한 태그를 기반으로 리소스를 검색하고 필터링할 수 있어요. 효과적인 리소스 태그 지정 전략을 구현하는 방법은 Tagging Best Practices AWS Whitepaper를 참고하세요.
태그는 Amazon EC2에 의미론적 의미가 없으며 문자 문자열로만 엄격히 해석돼요. 또한 태그는 리소스에 자동으로 할당되지 않아요. 태그 키와 값을 편집하고 언제든 리소스에서 태그를 제거할 수 있어요. 태그 값을 빈 문자열로 설정할 수 있지만 null로는 설정할 수 없어요. 해당 리소스의 기존 태그와 같은 키를 가진 태그를 추가하면 새 값이 이전 값을 덮어써요. 리소스를 삭제하면 해당 리소스의 모든 태그도 삭제돼요.
참고
리소스를 삭제한 후에도 그 태그는 짧은 기간 동안 콘솔, API, CLI 출력에 남아 있을 수 있어요. 이 태그들은 리소스에서 점차 연결 해제되어 영구적으로 삭제돼요.
리소스에 태그 지정
Amazon EC2 콘솔을 사용할 때 해당 리소스 화면의 Tags 탭을 사용하거나 AWS Resource Groups 콘솔의 Tags Editor를 사용해 리소스에 태그를 적용할 수 있어요. 일부 리소스 화면에서는 리소스를 만들 때 태그를 지정할 수 있게 해줘요. 예를 들어 키가 Name이고 내가 지정한 값을 가진 태그가 있어요. 대부분의 경우 콘솔은 리소스가 생성된 직후(리소스 생성 중이 아니라) 태그를 적용해요. 콘솔은 Name 태그에 따라 리소스를 구성할 수 있지만, 이 태그는 Amazon EC2 서비스에 의미론적 의미가 없어요.
Amazon EC2 API, AWS CLI, AWS SDK를 사용한다면 CreateTags EC2 API 작업을 사용해 기존 리소스에 태그를 적용할 수 있어요. 또한 일부 리소스 생성 작업은 리소스를 만들 때 태그를 지정할 수 있게 해줘요. 리소스 생성 중에 태그를 적용할 수 없으면 리소스 생성 프로세스를 롤백해요. 이렇게 하면 리소스가 태그와 함께 생성되거나 전혀 생성되지 않으며, 어떤 시점에도 태그가 지정되지 않은 리소스가 남지 않도록 보장해요. 만들어지는 시점에 리소스에 태그를 지정하면 생성 후 사용자 지정 태그 지정 스크립트를 실행할 필요가 없어져요. 사용자가 리소스 생성 시 태그를 지정하도록 허용하는 방법은 Grant permission to tag Amazon EC2 resources during creation을 참고하세요.
IAM 정책에서 태그 기반 리소스 수준 권한을 생성 시 태그 지정을 지원하는 Amazon EC2 API 작업에 적용해, 리소스 생성 시 태그를 지정할 수 있는 사용자와 그룹을 세밀하게 제어할 수 있어요. 리소스가 생성되는 순간부터 제대로 보호돼요 — 태그가 리소스에 즉시 적용되므로, 리소스 사용을 제어하는 태그 기반 리소스 수준 권한이 즉시 효과를 발휘해요. 리소스를 더 정확하게 추적하고 보고할 수 있어요. 새 리소스에 태그 지정 사용을 강제하고, 리소스에 설정되는 태그 키와 값을 제어할 수 있어요.
IAM 정책에서 CreateTags와 DeleteTags Amazon EC2 API 작업에 리소스 수준 권한을 적용해, 기존 리소스에 설정되는 태그 키와 값을 제어할 수도 있어요. 자세한 내용은 Example: Tag resources를 참고하세요.
과금을 위해 리소스에 태그를 지정하는 방법은 AWS Billing User Guide의 Using cost allocation tags를 참고하세요.
태그 제한
태그에 적용되는 기본 제한 사항은 다음과 같아요.
- 리소스당 최대 태그 수 – 50
- 각 리소스에 대해 각 태그 키는 고유해야 하며, 각 태그 키는 값 하나만 가질 수 있어요.
- 최대 키 길이 – UTF-8의 128자
- 최대 값 길이 – UTF-8의 256자
- 허용 문자: EC2는 태그에서 모든 문자를 허용하지만, 다른 AWS 서비스는 더 제한적이에요. 모든 AWS 서비스에서 허용되는 문자는 UTF-8로 표현 가능한 문자(a-z, A-Z), 숫자(0-9), 공백과 다음 문자입니다:
+ - = . _ : / @ - 인스턴스 메타데이터에서 인스턴스 태그를 활성화하면 인스턴스 태그 키는 문자(a-z, A-Z), 숫자(0-9), 그리고 다음 문자만 사용할 수 있어요:
+ - = . , _ : @. 인스턴스 태그 키는 공백이나/를 포함할 수 없고,.(마침표 하나),..(마침표 둘),_index만으로 구성될 수 없어요. 자세한 내용은 View tags for your EC2 instances using instance metadata를 참고하세요. - 태그 키와 값은 대소문자를 구분해요.
aws:접두사는 AWS 사용을 위해 예약돼 있어요. 이 접두사를 가진 태그 키가 있으면 해당 태그의 키나 값을 편집하거나 삭제할 수 없어요.aws:접두사가 있는 태그는 리소스당 태그 한도에 포함되지 않아요.
태그만으로 리소스를 종료, 중지, 삭제할 수는 없어요. 리소스 식별자를 지정해야 해요. 예를 들어 DeleteMe라는 태그 키로 태그한 스냅샷을 삭제하려면 스냅샷의 리소스 식별자(예: snap-1234567890abcdef0)를 사용해 DeleteSnapshots 작업을 호출해야 해요.
공개 또는 공유 리소스에 태그를 지정하면 할당한 태그는 내 AWS 계정에서만 사용할 수 있어요. 다른 AWS 계정은 그 태그에 접근할 수 없어요. 공유 리소스에 태그 기반 접근 제어를 하려면 각 AWS 계정이 자체 태그 집합을 할당해 리소스 접근을 제어해야 해요.
태그와 접근 관리
AWS IAM을 사용한다면 AWS 계정의 어떤 사용자가 태그를 만들고, 편집하고, 삭제할 권한이 있는지 제어할 수 있어요. 자세한 내용은 Grant permission to tag Amazon EC2 resources during creation을 참고하세요.
리소스 태그를 사용해 ABAC(attribute-based access control)를 구현할 수도 있어요. 리소스의 태그를 기반으로 작업을 허용하는 IAM 정책을 만들 수 있어요. 자세한 내용은 Control access using attribute-based access를 참고하세요.
과금을 위해 리소스에 태그 지정
태그를 사용해 내 비용 구조를 반영하도록 AWS 청구서를 구성할 수 있어요. 이렇게 하려면 태그 키 값이 포함된 AWS 계정 청구서를 받도록 등록하세요. 태그로 비용 할당 보고서를 설정하는 방법은 AWS Billing User Guide의 Monthly cost allocation report를 참고하세요. 결합 리소스의 비용을 보려면 같은 태그 키 값을 가진 리소스를 기준으로 과금 정보를 구성할 수 있어요. 예를 들어 여러 리소스에 특정 애플리케이션 이름으로 태그를 지정한 다음, 여러 서비스에 걸쳐 그 애플리케이션의 총 비용을 볼 수 있도록 과금 정보를 구성할 수 있어요. 자세한 내용은 AWS Billing User Guide의 Using cost allocation tags를 참고하세요.
참고
보고를 막 활성화했다면 현재 월의 데이터는 24시간 후에 볼 수 있어요.
비용 할당 태그는 어떤 리소스가 비용에 기여하는지 나타낼 수 있지만, 리소스를 삭제하거나 비활성화한다고 항상 비용이 줄지는 않아요. 예를 들어 다른 스냅샷이 참조하는 스냅샷 데이터는, 원본 데이터를 포함한 스냅샷이 삭제되어도 보존돼요. 자세한 내용은 AWS Billing User Guide의 Amazon Elastic Block Store volumes and snapshots를 참고하세요.
참고
태그가 지정된 Elastic IP 주소는 비용 할당 보고서에 나타나지 않아요.