Amazon RDS リソースのタグ付け - Amazon Aurora

Amazon RDS リソースのタグ付け

Amazon RDS タグを使用して Amazon RDS リソースにメタデータを追加できます。タグを使用して、データベースインスタンス、スナップショット、Aurora クラスターなどに関する独自の表記を追加できます。そうすることで、Amazon RDS リソースを文書化することができます。また、自動メンテナンスの手順でタグを使用することもできます。

特に、これらのタグを IAM ポリシーで使用して、Amazon RDS リソースへのアクセスを管理したり、Amazon RDS リソースに適用できるアクションを制御したりできます。また、これらのタグを使用して、類似のリソースの費用をグループ化することで、コストを追跡できます。

次の Amazon RDS リソースにタグ付けができます。

  • DB インスタンス

  • DB クラスター

  • リードレプリカ

  • DB スナップショット

  • DB クラスタースナップショット

  • リザーブド DB インスタンス

  • イベントサブスクリプション

  • DB オプショングループ

  • DB パラメータグループ

  • DB クラスターのパラメータグループ

  • DB セキュリティグループ

  • DB サブネットグループ

Amazon RDS リソースタグの概要

Amazon RDS タグは、Amazon RDS リソースを定義してそのリソースに関連付ける名前と値のペアです。その名前はキーと呼ばれます。キーの値の指定は省略可能です。タグを使用して、Amazon RDS リソースに任意の情報を割り当てることができます。例えば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。例として、「project」というタグキーと「Salix」というタグ値を定義し、Amazon RDS リソースが Salix プロジェクトに割り当てられていることを示すことができます。また、environment=testenvironment=production などのタグキーを使用して Amazon RDS リソースがテスト用であるか本番稼働用であるかを示すこともできます。Amazon RDS リソースに関連付けられているメタデータの追跡が簡単になるように、一貫した一連のタグキーを使用することをお勧めします。

各 Amazon RDS リソースにはタグセットがあり、それぞれの Amazon RDS リソースに割り当てられているすべてのタグが含まれています。タグセットには最大 50 個のタグを含めることができ、空にすることもできます。Amazon RDS リソースに追加したタグのキーがそのリソースの既存のタグのキーと同じ場合、既存の値は新しい値によって上書きされます。

AWS は、タグに意味を適用しません。タグは文字列として厳密に解釈されます。リソース作成時に使用する設定によっては、Amazon RDS によって DB インスタンスまたは他の Amazon RDS リソースにタグが設定されることがあります。例えば、Amazon RDS によって DB インスタンスが本稼働用またはテスト用であることを示すタグが追加されることがあります。

  • タグキーは、必須のタグ名です。文字列値は、1〜128 文字の Unicode 文字です。aws: または rds: をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「:」、「/」、「=」、「+」、「-」、「@」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)") のみ使用できます。

  • タグ値は、タグの省略可能な文字列値です。文字列値は、1〜256 文字の Unicode 文字です。aws: をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「:」、「/」、「=」、「+」、「-」、「@」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)") のみ使用できます。

    値はタグセット内で一意である必要はなく、null を指定できます。例えば、project=Trinitycost-center=Trinity のタグセット内に 1 つのキーと値のペアを使用できます。

AWS Management Console、コマンドラインインターフェイス、または Amazon RDS API を使用して、Amazon RDS リソースに対してタグを追加、一覧表示、削除できます。コマンドラインインターフェイスまたは Amazon RDS API を使用するときは、操作する Amazon RDS リソースの Amazon リソースネーム(ARN)を指定する必要があります。ARN の作成の詳細については、「Amazon RDS 用 ARN の構築」を参照してください。

タグは承認用にキャッシュに格納されます。そのため、Amazon RDS リソースに対するタグの追加や更新には数分かかることがあります。

IAM でのアクセスコントロールのタグ使用

タグを IAM ポリシーで使用して、Amazon RDS リソースへのアクセスを管理したり、Amazon RDS リソースに適用できるアクションを制御したりできます。

IAM ポリシーでタグ付きリソースへのアクセスを管理する方法については、「Amazon Aurora での Identity and Access Management」を参照してください。

タグを使用した請求明細レポートの作成

また、タグを使用して、類似のリソースの費用をグループ化することで、コストを追跡できます。

タグを使用して、自分のコスト構造を反映するように AWS 請求書を整理します。そのためには、サインアップして、タグキー値が含まれた AWS アカウントの請求書を取得する必要があります。次に、結合したリソースのコストを見るには、同じタグキー値のリソースに従って請求書情報を整理します。例えば、複数のリソースに特定のアプリケーション名のタグを付け、請求情報を整理することで、複数のサービスを利用しているアプリケーションの合計コストを確認することができます。詳細については、AWS Billing and Cost Management の「コスト配分タグの使用」を参照してください。

注記

スナップショットにタグを追加することはできますが、請求書にはこのグループが反映されません。

タグの追加、リスト化、削除

次の手順では、DB インスタンスおよび Aurora DB クラスターに関連するリソースに対して一般的なタグ付け操作を実行する方法を示しています。

Amazon RDS リソースにタグを追加するプロセスはすべてのリソースで同様です。以下の手順では、Amazon RDS DB インスタンスにタグを付加する方法を示します。

DB インスタンスにタグを追加するには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

    注記

    [Filter databases (データベースのフィルタ)] ペインで DB インスタンスの一覧をフィルタするには、[Filter databases (データベースのフィルタ)] のテキスト文字列を入力します。その文字列を含む DB インスタンスのみが表示されます。

  3. タグ付けする DB インスタンスの名前を選択して、その詳細を表示します。

  4. 詳細セクションで、下にスクロールし、[タグ] を選択します。

  5. [Add] を選択します。[タグの追加] ウィンドウが表示されます。

    
            [タグの追加] ウィンドウ
  6. [タグキー] と [] の値を入力します。

  7. 別のタグを追加するには、[別のタグを追加] を選択し、[タブキー] と [] の値を入力します。

    このステップを必要な回数繰り返します。

  8. [Add] を選択します。

DB インスタンスからタグを削除するには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

    注記

    [Filter databases (データベースのフィルタ)] ペインで DB インスタンスの一覧をフィルタするには、[Filter databases (データベースのフィルタ)] ボックスにテキスト文字列を入力します。その文字列を含む DB インスタンスのみが表示されます。

  3. DB インスタンスの名前を選択して、その詳細を表示します。

  4. 詳細セクションで、下にスクロールし、[タグ] を選択します。

  5. 削除するタグを選択します。

    
          タグセクション
  6. [削除] を選択し、[Delete tags] (タグの削除) ウィンドウから [削除] を選択します。

AWS CLI を使用して DB インスタンスのタグを追加、一覧表示、または削除できます。

  • Amazon RDS リソースに 1 つ以上のタグを追加するには、AWS CLI コマンド add-tags-to-resource を使用します。

  • Amazon RDS リソースのタグを一覧表示するには、AWS CLI コマンド list-tags-for-resource を使用します。

  • Amazon RDS リソースから 1 つ以上のタグを削除するには、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 タグとその特性のリストです。キーと値では大文字と小文字が区別されます。例えば、project=Trinity と PROJECT=Trinity は 2 つの別個のタグです。

タグ付け要素 説明
タグセット タグセットは、Amazon RDS リソースに割り当てられるすべてのタグのコンテナーです。リソースごとに割り当て可能なのは 1 つのタグセットのみです。Amazon RDS API によってのみタグセットを操作できます。
Tag タグはユーザー定義のキーと値のペアです。1 ~ 50 個のタグをタグセットに含めることができます。
キー

キーはタグの必須の名前です。文字列値は、1〜128 文字の Unicode 文字です。aws: または rds: をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)") のみ使用できます。

キーはタグセットに対して一意である必要があります。例えば、タグセットでキーが同じで値が異なるキーと値のペアは使用できません。例えば、project/Trinity や project/Xanadu は使用できません。

値はタグの省略可能な値です。文字列値は、1〜256 文字の Unicode 文字です。aws: または rds: をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「/」、「=」、「+」、「-」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)") のみ使用できます。

値はタグセット内で一意である必要はなく、null を指定できます。例えば、project/Trinity と cost-center/Trinity のタグセット内に 1 つのキーと値のペアを使用できます。

AWS タグエディタの使用

AWS Management Console タグエディタを使用して、AWS で RDS リソースのタグを参照および編集できます。詳細については、AWS リソースグループユーザーガイドタグエディタを参照してください。

DB クラスタースナップショットへのタグのコピー

DB クラスターを作成または復元するときに、DB クラスターのタグを DB クラスターのスナップショットにコピーするように指定できます。タグをコピーすると、DB スナップショットとソース DB クラスターのメタデータが確実に一致し、また、DB スナップショットとソース DB クラスターのアクセスポリシーが確実に一致するようになります。タグは、デフォルトではコピーされません。

次のアクションでタグが DB スナップショットにコピーされるように指定できます。

  • DB クラスターの作成。

  • DB クラスターを復元します。

  • リードレプリカの作成。

  • DB クラスターのスナップショットのコピー。

注記

create-db-cluster-snapshot --tag-key コマンドの AWS CLI パラメータの値を含めた場合 (または、CreateDBClusterSnapshot API オペレーションにタグを少なくとも 1 つ指定した場合)、RDS はソース DB インスタンスから新しい DB スナップショットにタグをコピーしません。この機能は、ソース DB クラスターの --copy-tags-to-snapshot (CopyTagsToSnapshot) オプションが有効になっている場合でも、適用されます。このアプローチを使用すると、DB クラスタースナップショットから DB クラスターのコピーを作成でき、新しい DB クラスターに適用されないタグを追加しないようにすることができます。AWS CLI の create-db-cluster-snapshot コマンド (または CreateDBSClusternapshot Amazon RDS API オペレーション) を使用して 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", ...

このようなスクリプトを 1 日の終わりに実行して、重要でないクラスターが停止していることを確認できます。また、クラスタが誤って実行されたままになっている場合に備えて、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 クラスターを使用するこのシナリオでは、一部のクラスターを 1 日の終わりに削除するか、リーダー DB インスタンスのみを削除するか、使用率が低いと予想される時間帯に DB インスタンスを小さな DB インスタンスクラスに変更するように指定することができます。