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 リソースに任意の情報を割り当てることができます。例えば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。例えば、「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 Aurora での Identity and Access Management」を参照してください。

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

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

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

注記

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

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

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

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

    
            [タグの追加] ウィンドウ
  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 クラスターのスナップショットのコピー。

注記

場合によっては、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 スナップショットを作成した後、このトピックで説明しているように、タグを追加することができます。

チュートリアル: タグを使用して、停止する 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 インスタンスを 1 日の終わりに削除するように指定することができます。あるいは、使用率が低いと予想される時間帯に DB インスタンスを小さな DB インスタンスクラスに変更するように指定することもできます。