Amazon RDS リソースのタグ付け - Amazon Relational Database Service

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 リソースに任意の情報を割り当てることができます。例えば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。例えば、「project」というタグキーと「Salix」というタグ値を定義することができます。この場合、これらは Amazon RDS リソースが Salix プロジェクトに割り当てられていることを示しています。また、environment=testenvironment=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 文字の Unicode 文字です。aws: または rds: をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「:」、「/」、「=」、「+」、「-」、「@」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)") のみ使用できます。

  • タグ値は、タグの省略可能な文字列値です。文字列値は、1~256 文字の Unicode 文字です。文字列には、一連の Unicode 文字、数字、空白、「_」、「.」、「:」、「/」、「=」、「+」、「-」、「@」 (Java 正規表現: "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)") のみ使用できます。

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

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 RDS での Identity and Access Management」を参照してください。

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

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

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

注記

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

コスト配分タグを DB スナップショットに適用するには、タグを親 DB インスタンスにアタッチし、親インスタンスがスナップショットと同じ AWS リージョン に存在する必要があります。孤立したスナップショットのコストは、タグのない単一の項目に集約されます。

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

次の手順では、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. 追加] を選択します。[タグの追加] ウィンドウが表示されます。

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

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

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

  8. 追加] を選択します。

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 スナップショットのコピー

ほとんどの場合、デフォルトでタグのコピーは行われません。DB スナップショットから DB インスタンスを復元した際に、RDS は新しいタグが指定されているかどうかをチェックします。新しいタグが指定されている場合、そのタグは復元された DB インスタンスに追加されます。新しいタグがない場合、RDS は、スナップショットの作成時にソース DB インスタンスから復元された DB インスタンスにタグを追加します。

ソース DB インスタンスのタグが復元された DB インスタンスに追加されることを防ぐには、DB インスタンスの復元時に新しいタグを指定することをお勧めします。

注記

場合によっては、create-db-snapshot AWS CLI コマンドの --tags パラメータに値を含めることができます。または、CreateDBSnapshot API オペレーションに少なくとも 1 つのタグを指定することもできます。このような場合、RDS はソース DB インスタンスから新しい DB スナップショットにタグをコピーしません。この機能は、ソース DB インスタンスの --copy-tags-to-snapshot (CopyTagsToSnapshot) オプションが有効になっている場合でも、適用されます。

このアプローチを使用すると、DB スナップショットから DB インスタンスのコピーを作成できます。この方法では、新しい DB インスタンスに適用されないタグを追加する必要がなくなります。DB スナップショットは、AWS CLIcreate-db-snapshotコマンド (またはCreateDBSnapshot RDS API オペレーション) を使用して作成します。DB スナップショットを作成した後、このトピックで説明しているように、タグを追加することができます。

チュートリアル: タグを使用して停止する DB インスタンスを指定する

開発環境またはテスト環境で多数の DB インスタンスを作成するとします。これらのすべての DB インスタンスを数日間保持する必要があります。DB インスタンスの一部は、夜間にテストを実施します。他の DB インスタンスは、夜間に停止し、翌日に再び開始することができます。次の例では、夜間に停止するのに適した DB インスタンスにタグを割り当てる方法を示しています。次に、この例では、スクリプトがそのタグを持つ DB インスタンスを検出し、その DB インスタンスを停止する方法を示しています。この例では、キーと値のペアでの値の部分は重要ではありません。stoppable タグが存在するということは、DB インスタンスにこのユーザー定義プロパティがあることを示します。

停止する DB インスタンスを指定する
  1. 停止可能として指定する DB インスタンスの ARN を決めます。

    タグ付け用のコマンドと API は、ARN で使用できます。そうすることで、AWS リージョン、AWS アカウント、および同様の短い名前を持つ可能性のあるさまざまなタイプのリソース間でシームレスに機能できます。DB インスタンスで動作する CLI コマンドで、DB インスタンス ID の代わりに ARN を指定できます。dev-test-db-instance は、独自の DB インスタンスの名前に置き換えます。ARN パラメータを使用する後続のコマンドでは、独自の DB インスタンスの ARN を置き換えます。ARN には、お客様自身の AWS アカウント ID と、DB インスタンスが配置されている AWS リージョンの名前が含まれます。

    $ aws rds describe-db-instances --db-instance-identifier dev-test-db-instance \ --query "*[].{DBInstance:DBInstanceArn}" --output text arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
  2. この DB インスタンスに stoppable タグを追加します。

    このタグの名前を選択します。このアプローチにより、すべての関連情報を名前にエンコードする命名規則を考案する必要がなくなります。このような規則では、DB インスタンス名または他のリソースの名前に情報をエンコードすることができます。この例では、タグが存在するか存在しないかの属性として扱うため、Value= パラメータの --tags 部分を省略します。

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \ --tags Key=stoppable
  3. タグが DB インスタンスに存在することを確認します。

    これらのコマンドは、JSON 形式およびタブ区切りのテキストで DB インスタンスのタグ情報を取得します。

    $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance { "TagList": [ { "Key": "stoppable", "Value": "" } ] } aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance --output text TAGLIST stoppable
  4. stoppable に指定されているすべての DB インスタンスを停止するには、すべての DB インスタンスのリストを準備します。リストをループし、各 DB インスタンスが関連する属性でタグ付けされているかどうかを確認します。

    この Linux の例では、シェルスクリプトを使用しています。このスクリプトは、DB インスタンス ARN のリストを一時ファイルに保存し、DB インスタンスごとに CLI コマンドを実行します。

    $ aws rds describe-db-instances --query "*[].[DBInstanceArn]" --output text >/tmp/db_instance_arns.lst $ for arn in $(cat /tmp/db_instance_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep stoppable)" if [[ ! -z "$match" ]] then echo "DB instance $arn is tagged as stoppable. Stopping it now." # Note that you need to get the DB instance identifier from the ARN. dbid=$(echo $arn | sed -e 's/.*://') aws rds stop-db-instance --db-instance-identifier $dbid fi done DB instance arn:arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance is tagged as stoppable. Stopping it now. { "DBInstance": { "DBInstanceIdentifier": "dev-test-db-instance", "DBInstanceClass": "db.t3.medium", ...

このようなスクリプトを 1 日の終わりに実行して、必要ではない DB インスタンスが停止されていることを確認できます。cron などのユーティリティを使用してジョブのスケジュールを組み、毎晩そのような確認を実行することもできます。例えば、DB インスタンスが誤って実行されたままになった場合に利用できます。ここでは、確認する DB インスタンスのリストを準備するコマンドを微調整できます。

次のコマンドは、DB インスタンスのリストを生成しますが、available 状態の場合にのみ生成します。スクリプトでは、stopped または stopping などのステータス値が異なるため、すでに停止している DB インスタンスを無視できます。

$ aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output text arn:aws:rds:us-east-1:123456789102:db:db-instance-2447 arn:aws:rds:us-east-1:123456789102:db:db-instance-3395 arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance arn:aws:rds:us-east-1:123456789102:db:pg2-db-instance
ヒント

タグを割り当てて、それらのタグを持つ DB インスタンスを検索して、他の方法でコストを削減することができます。例えば、開発とテストに使用される DB インスタンスのシナリオを考えてみましょう。この場合、一日の終わりにいくつかの DB インスタンスを削除するように指定できます。または、使用率が低いと予想される時間帯に DB インスタンスを小さな DB インスタンスクラスに変更するように指定することもできます。