Amazon RDS 리소스에 태그 지정 - Amazon Aurora

Amazon RDS 리소스에 태그 지정

Amazon RDS 태그를 사용하여 Amazon RDS 리소스에 메타데이터를 추가할 수 있습니다. 태그를 사용하여 데이터베이스 인스턴스, 스냅샷, Aurora 클러스터 등에 대한 고유한 표기법을 추가할 수 있습니다. 이렇게 하면 Amazon RDS 리소스를 문서화하는 데 도움이 될 수 있습니다. 자동화된 유지 관리 절차와 함께 태그를 사용할 수도 있습니다.

특히 이러한 태그를 IAM 정책에 사용할 수 있습니다. 태그를 사용하여 RDS 리소스에 대한 액세스를 관리하고 RDS 리소스에 적용 가능한 작업을 제어할 수 있습니다. 또한 비슷하게 태그가 지정된 리소스에 대한 비용을 그룹화하여 이러한 태그로 비용을 추적할 수 있습니다.

다음 Amazon RDS 리소스에 태그를 지정할 수 있습니다.

  • DB 인스턴스

  • DB 클러스터

  • DB 클러스터 엔드포인트

  • 읽기 전용 복제본

  • DB 스냅샷

  • DB 클러스터 스냅샷

  • 예약 DB 인스턴스

  • 이벤트 구독

  • DB 옵션 그룹

  • DB 파라미터 그룹

  • DB 클러스터 파라미터 그룹

  • DB 서브넷 그룹

  • RDS 프록시

  • RDS Proxy 엔드포인트

  • 블루/그린 배포

  • 제로 ETL 통합(미리 보기)

참고

현재는 AWS Management Console을 사용하여 RDS 프록시 및 RDS 프록시 엔드포인트에 태그를 지정할 수 없습니다.

Amazon RDS 리소스 태그 개요

Amazon RDS 태그는 사용자가 정의하고 Amazon RDS 리소스와 연결하는 이름-값 페어입니다. 이 이름을 키라고 합니다. 키 값을 제공하는 것은 선택 사항입니다. 태그를 사용하여 Amazon RDS 리소스에 임의의 정보를 배정할 수 있습니다. 범주 정의 등에 태그 키를 사용할 수 있으며 태그 값은 해당 범주의 항목일 수 있습니다. 예를 들어, 태그 키를 '프로젝트'로 정의하고 태그 값을 'Salix'로 정의할 수 있습니다. 이 경우 Amazon RDS 리소스가 Salix 프로젝트에 할당되었음을 나타냅니다. 또한 태그를 사용하여 environment=test 또는 environment=production 등의 키를 사용해 Amazon RDS 리소스를 테스트나 프로덕션에 사용되도록 지정할 수도 있습니다. Amazon RDS 리소스와 연결된 메타데이터를 더 쉽게 추적할 수 있게 일관성 있는 태그 키 세트를 사용하는 것이 좋습니다.

또한 IAM 정책에 조건을 사용하여 해당 리소스의 태그를 기반으로 AWS 리소스에 대한 액세스를 제어할 수 있습니다. 전역 aws:ResourceTag/tag-key 조건 키를 사용하면 됩니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서AWS 리소스에 대한 액세스 제어를 참조하세요.

각 Amazon RDS 리소스에는 해당 Amazon RDS 리소스에 배정되는 모든 태그를 포함하는 태그 세트가 있습니다. 태그 세트는 최대 50개의 태그를 포함하거나 비어 있을 수 있습니다. 기존 리소스 태그와 키가 동일한 태그를 RDS 리소스에 추가하면 새 값이 이전 값을 덮어씁니다.

AWS는 태그에 의미론적 의미를 적용하지 않으며 태그는 엄격히 문자열로 해석됩니다. RDS는 DB 인스턴스 또는 기타 RDS 리소스에 태그를 설정할 수 있습니다. 태그 설정은 리소스를 생성할 때 사용하는 옵션에 따라 달라집니다. 예를 들어 Amazon RDS에서 DB 인스턴스가 프로덕션용인지, 아니면 테스트용인지를 나타내는 태그를 추가할 수 있습니다.

  • 태그 키는 태그의 필수 이름입니다. 문자열 값은 길이가 1~128자인 유니코드 문자이며 aws: 또는 rds:를 접두사로 사용할 수 없습니다. 문자열에는 유니코드 문자 집합, 숫자, 공백, '_', '.', ':', '/', '=', '+', '-', '@'(Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$")만 포함할 수 있습니다.

  • 태그 값은 태그의 선택적 문자열 값입니다. 문자열 값은 길이가 1~256자인 유니코드 문자입니다. 문자열에는 유니코드 문자 집합, 숫자, 공백, '_', '.', ':', '/', '=', '+', '-', '@'(Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$")만 포함할 수 있습니다.

    값은 태그 세트에서 고유할 필요는 없으며 null일 수 있습니다. 예를 들어 project=Trinitycost-center=Trinity의 태그 세트에 키-값 페어가 있을 수 있습니다.

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 Amazon RDS 리소스에서 태그를 추가, 나열 및 삭제할 수 있습니다. CLI 또는 API를 사용할 때 사용할 RDS 리소스에 대한 Amazon 리소스 이름(ARN)을 제공해야 합니다. ARN 생성에 대한 자세한 내용은 Amazon RDS의 ARN 구성 주제단원을 참조하십시오.

권한 부여 목적으로 태그가 캐시됩니다. 이 때문에 Amazon RDS 리소스의 태그에 대한 추가나 업데이트가 제공되는 데 몇 분 정도 걸릴 수 있습니다.

IAM과 함께 액세스 제어에 태그 사용

IAM 정책이 연결된 태그로 Amazon RDS 리소스에 대한 액세스를 관리할 수 있습니다. 또한 태그를 사용하여 Amazon RDS 리소스에 적용 가능한 작업을 제어할 수 있습니다.

IAM 정책으로 태그가 지정된 리소스 액세스 관리에 대한 자세한 내용은 Amazon Aurora의 자격 증명 및 액세스 관리 단원을 참조하십시오.

태그를 사용하여 세부 결제 보고서 생성

또한 비슷하게 태그가 지정된 리소스에 대한 비용을 그룹화하여 이러한 태그로 비용을 추적할 수 있습니다.

태그를 사용하여 비용 구조를 반영하도록 AWS 청구서를 구성합니다. 이렇게 하려면 가입하여 태그 키 값이 포함된 AWS 계정 청구서를 가져옵니다. 그런 다음 같은 태그 키 값을 가진 리소스에 따라 결제 정보를 구성하여 리소스 비용의 합을 볼 수 있습니다. 예를 들어, 특정 애플리케이션 이름으로 여러 리소스에 태그를 지정한 다음 결제 정보를 구성하여 여러 서비스에 걸친 해당 애플리케이션의 총 비용을 볼 수 있습니다. 자세한 내용은 AWS Billing 사용 설명서비용 할당 태그 사용을 참조하십시오.

참고

DB 클러스터 스냅샷에 태그를 추가할 수 있지만, 청구서에는 이 그룹화가 반영되지 않습니다.

비용 할당 태그를 DB 클러스터 스냅샷에 적용하려면 태그를 상위 DB 클러스터에 연결해야 하며 상위 클러스터는 스냅샷과 동일한 AWS 리전에 존재해야 합니다. 분리된 스냅샷에 대한 비용은 태그가 지정되지 않은 단일 항목에 집계됩니다.

태그 추가, 나열, 제거

다음 절차에서는 DB 인스턴스 및 Aurora DB 클러스터와 관련된 리소스에 대한 일반적인 태깅 작업을 수행하는 방법을 보여줍니다.

Amazon RDS 리소스에 태그를 지정하는 프로세스는 모든 리소스에서 비슷합니다. 다음 절차에서는 Amazon RDS DB 인스턴스에 태그를 지정하는 방법을 보여줍니다.

DB 인스턴스에 태그를 추가하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

    참고

    DB 인스턴스 목록을 필터링하려면 데이터베이스 창의 Filter databases(데이터베이스 필터링)에 텍스트 문자열을 입력합니다. 해당 문자열을 포함하는 DB 인스턴스만 표시됩니다.

  3. 세부 정보를 보기 위해 태그 지정하려는 DB 인스턴스의 이름을 선택합니다.

  4. 세부 정보 섹션에서 아래에 있는 태그 섹션으로 스크롤합니다.

  5. [추가]를 선택합니다. 태그 추가 창이 나타납니다.

    태그 추가 창
  6. 태그 키에 값을 입력합니다.

  7. 다른 태그를 추가하려면 다른 태그 추가를 선택하고 태그 키에 값을 입력합니다.

    이 단계를 필요한 만큼 반복합니다.

  8. [추가]를 선택합니다.

DB 인스턴스에서 태그를 삭제하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

    참고

    DB 인스턴스 목록을 필터링하려면 데이터베이스 창의 Filter databases(데이터베이스 필터링) 상자에 텍스트 문자열을 입력합니다. 해당 문자열을 포함하는 DB 인스턴스만 표시됩니다.

  3. 세부 정보를 표시할 DB 인스턴스의 이름을 선택합니다.

  4. 세부 정보 섹션에서 아래에 있는 태그 섹션으로 스크롤합니다.

  5. 삭제하려는 태그를 선택합니다.

    태그 섹션
  6. Delete(삭제)를 선택한 다음 Delete tags(삭제 태그)창에서 Delete(삭제)를 선택합니다.

AWS CLI 사용을 통해 DB 인스턴스에 대한 태그를 추가, 나열 또는 제거할 수 있습니다.

  • Amazon RDS 리소스에 하나 이상의 태그를 추가하려면 AWS CLI 명령 add-tags-to-resource를 사용합니다.

  • Amazon RDS 리소스의 태그를 나열하려면 AWS CLI 명령 list-tags-for-resource를 사용합니다.

  • Amazon RDS 리소스에서 하나 이상의 태그를 삭제하려면 AWS CLI 명령 remove-tags-from-resource를 사용합니다.

필수 ARN을 생성하는 방법에 대해 자세히 알아보려면 Amazon RDS의 ARN 구성 단원을 참조하십시오.

Amazon RDS API를 사용하여 DB 인스턴스에 대한 태그를 추가, 나열 또는 제거할 수 있습니다.

  • Amazon RDS 리소스에 태그를 추가하려면 AddTagsToResource 작업을 사용합니다.

  • Amazon RDS 리소스에 배정된 태그를 나열하려면 ListTagsForResource를 사용합니다.

  • Amazon RDS 리소스에서 태그를 제거하려면 RemoveTagsFromResource 작업을 사용합니다.

필수 ARN을 생성하는 방법에 대해 자세히 알아보려면 Amazon RDS의 ARN 구성 단원을 참조하십시오.

Amazon RDS API를 사용한 XML 작업 시 다음 스키마를 사용하십시오.

<Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging>

다음 표에는 허용되는 XML 태그와 해당 특성의 목록이 나와 있습니다. Key 및 Value 값은 대/소문자를 구분합니다. 예를 들어, project=Trinity와 PROJECT=Trinity는 서로 다른 두 개의 태그입니다.

태그 지정 요소 설명
TagSet 태그 세트에는 Amazon RDS 리소스에 배정된 모든 태그가 포함됩니다. 리소스당 하나의 태그 세트만 있을 수 있습니다. Amazon RDS API를 통해서만 TagSet로 작업합니다.
Tag 태그는 사용자가 정의하는 키-값 페어입니다. 태그 세트에 1~50개의 태그가 있을 수 있습니다.

키는 태그의 필수 이름입니다. 문자열 값은 길이가 1~128자인 유니코드 문자이며 aws: 또는 rds:를 접두사로 사용할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")만 포함될 수 있습니다.

키는 태그 집합에 대해 고유해야 합니다. 예를 들어, 태그 세트에 project/Trinity와 project/Xanadu처럼 키는 같지만 값은 다른 키-페어가 있을 수 없습니다.

값은 태그의 선택적 값입니다. 문자열 값은 길이가 1~256자인 유니코드 문자이며 aws: 또는 rds:를 접두사로 사용할 수 없습니다. 문자열에는 유니코드 문자, 숫자, 공백, '_', '.', '/', '=', '+', '-'(Java regex: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")만 포함될 수 있습니다.

값은 태그 세트에서 고유할 필요는 없으며 null일 수 있습니다. 예를 들어, project/Trinity 및 cost-center/Trinity의 태그 세트에 키-값 페어가 있을 수 있습니다.

AWS Tag Editor 사용

AWS Management Console Tag Editor를 사용하여 AWS에서 RDS 리소스의 태그를 찾아보고 편집할 수 있습니다. 자세한 내용은 AWS 리소스 그룹 사용 설명서Tag Editor를 참조하세요.

DB 클러스터 스냅샷에 태그 복사

DB 클러스터를 생성하거나 복원할 때 DB 클러스터의 태그가 DB 클러스터의 스냅샷에 복사되도록 지정할 수 있습니다. 태그를 복사하면 DB 스냅샷의 메타데이터가 원본 DB 클러스터의 메타데이터와 일치하게 됩니다. DB 스냅샷의 액세스 정책 또한 원본 DB 클러스터의 액세스 정책과 같아집니다. 태그는 기본적으로 복사되지 않습니다.

다음 작업 시 DB 스냅샷으로 태그를 복사하도록 지정할 수 있습니다.

  • DB 클러스터 생성.

  • DB 클러스터 복원.

  • 읽기 전용 복제본 생성

  • DB 클러스터 스냅샷 복사.

참고

경우에 따라 create-db-snapshot AWS CLI 명령의 --tags 파라미터 값을 포함할 수 있습니다. 또는 CreateDBSnapshot API 작업에 하나 이상의 태그를 제공할 수도 있습니다. 이러한 경우 RDS는 원본 DB 인스턴스에서 새 DB 스냅샷으로 태그를 복사하지 않습니다. 이 기능은 원본 DB 인스턴스에 --copy-tags-to-snapshot(CopyTagsToSnapshot) 옵션이 활성화되어 있어도 적용됩니다.

이 방법을 사용할 경우 DB 스냅샷에서 DB 인스턴스의 복사본을 생성할 수 있습니다. 이 접근 방식을 사용하면 새 DB 인스턴스에 적용되지 않는 태그를 추가하는 것을 피할 수 있습니다. AWS CLI create-db-snapshot 명령(또는 CreateDBSnapshot RDS API 작업)을 사용하여 DB 스냅샷을 생성합니다. DB 스냅샷을 생성한 후 이 주제의 뒷부분에서 설명된 대로 태그를 추가할 수 있습니다.

자습서: 태그를 사용하여 중지할 Aurora DB 클러스터 지정

개발 환경이나 테스트 환경에서 여러 Aurora DB 클러스터를 생성한다고 가정합니다. 며칠 동안 이러한 클러스터를 모두 유지해야 합니다. 어떤 클러스터는 밤새 테스트를 실행합니다. 또 다른 클러스터는 밤새 중단하고 다음 날 다시 시작할 수 있습니다. 다음 예제에서는 밤새 중단하기에 적합한 클러스터에 태그를 할당하는 방법을 보여줍니다. 그런 다음 이 예제에서는 스크립트가 해당 태그가 있는 클러스터를 감지한 후 해당 클러스터를 중지하는 방법을 보여줍니다. 이 예제에서 키-값 쌍의 값 부분은 중요하지 않습니다. stoppable 태그가 있다는 것은 클러스터에 이 사용자 정의 속성이 있음을 의미합니다.

중지할 Aurora DB 클러스터를 지정하려면
  1. 중지 가능으로 지정하려는 클러스터의 ARN을 결정합니다.

    태그 지정을 위한 명령 및 API는 ARN과 함께 작동합니다. 이렇게 하면 AWS 리전, AWS 계정 및 동일한 짧은 이름을 가질 수 있는 다양한 유형의 리소스 간에 원활하게 작동할 수 있습니다. 클러스터에서 작동하는 CLI 명령에서 클러스터 ID 대신 ARN을 지정할 수 있습니다. 사용자 클러스터의 이름을 dev-test-cluster로 대체합니다. ARN 파라미터를 사용하는 후속 명령에서, 사용자 클러스터의 ARN을 대체합니다. ARN에는 사용자의 AWS 계정 ID와 클러스터가 위치한 AWS 리전의 이름이 포함되어 있습니다.

    $ aws rds describe-db-clusters --db-cluster-identifier dev-test-cluster \ --query "*[].{DBClusterArn:DBClusterArn}" --output text arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
  2. stoppable 태그를 이 클러스터에 추가합니다.

    이 태그의 이름은 사용자가 선택합니다. 이 방법을 사용하면 모든 관련 정보를 이름에 인코딩하는 명명 규칙을 만드는 것을 피할 수 있습니다. 이러한 규칙 하에서는 DB 인스턴스 이름 또는 다른 리소스의 이름에 정보를 인코딩할 수 있습니다. 이 예제에서는 태그를 있거나 없는 속성으로 취급하기 때문에 Value= 파라미터의 --tags 일부를 생략합니다.

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster \ --tags Key=stoppable
  3. 태그가 클러스터에 있는지 확인합니다.

    이러한 명령은 클러스터에 대한 태그 정보를 JSON 형식 및 탭으로 구분된 일반 텍스트로 검색합니다.

    $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster { "TagList": [ { "Key": "stoppable", "Value": "" } ] } $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster --output text TAGLIST stoppable
  4. stoppable(으)로 지정된 모든 클러스터를 중지하려면 모든 클러스터 목록을 준비합니다. 목록을 반복하고 각 클러스터에 관련 속성으로 태그가 지정되어 있는지 확인합니다.

    이 Linux 예제에서는 셸 스크립팅을 사용하여 클러스터 ARN 목록을 임시 파일에 저장한 후 각 클러스터에 대해 CLI 명령을 수행합니다.

    $ aws rds describe-db-clusters --query "*[].[DBClusterArn]" --output text >/tmp/cluster_arns.lst $ for arn in $(cat /tmp/cluster_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep 'TAGLIST\tstoppable')" if [[ ! -z "$match" ]] then echo "Cluster $arn is tagged as stoppable. Stopping it now." # Note that you can specify the full ARN value as the parameter instead of the short ID 'dev-test-cluster'. aws rds stop-db-cluster --db-cluster-identifier $arn fi done Cluster arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster is tagged as stoppable. Stopping it now. { "DBCluster": { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-1e", "us-east-1c", "us-east-1d" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "dev-test-cluster", ...

매일 일과가 끝날 때 이와 같은 스크립트를 실행하여 불필요한 클러스터가 중지되도록 할 수 있습니다. 매일 밤 이러한 검사를 수행하기 위해 cron 등의 유틸리티를 사용하여 작업을 예약할 수도 있습니다. 예를 들어, 일부 클러스터가 실수로 실행 중으로 남아 있지 않도록 하려면 검사를 예약하면 됩니다. 이때 검사할 클러스터 목록을 준비하는 명령을 세부 조정할 수 있습니다.

다음 명령은 클러스터 목록을 생성하지만 available 상태에 있는 클러스터만 생성합니다. 스크립트는 이미 중지된 클러스터를 무시할 수 있습니다. 이러한 클러스터는 stopped 또는 stopping 등 상태 값이 다르기 때문입니다.

$ aws rds describe-db-clusters \ --query '*[].{DBClusterArn:DBClusterArn,Status:Status}|[?Status == `available`]|[].{DBClusterArn:DBClusterArn}' \ --output text arn:aws:rds:us-east-1:123456789:cluster:cluster-2447 arn:aws:rds:us-east-1:123456789:cluster:cluster-3395 arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster arn:aws:rds:us-east-1:123456789:cluster:pg2-cluster
작은 정보

태그를 할당하고 해당 태그가 있는 클러스터를 찾는 기능을 사용하여 다른 방법으로 비용을 줄일 수 있습니다. 개발 및 테스트에 사용되는 Aurora DB 클러스터를 예로 들어 보겠습니다. 여기서 일과가 끝날 때 일부 클러스터를 삭제하도록 지정하거나 해당 클러스터의 리더 DB 인스턴스만 삭제하도록 지정할 수도 있습니다. 또는 사용량이 낮을 것으로 예상되는 시기에 DB 인스턴스를 소규모 DB 인스턴스 클래스로 변경하도록 지정할 수 있습니다.