

# Amazon Aurora および Amazon RDS リソースのタグ付け
<a name="USER_Tagging"></a><a name="tagging"></a>

Amazon RDS タグは、DB インスタンスまたは DB スナップショットなどの Amazon RDS リソースを定義し、関連付ける名前と値のペアです。その名前はキーと呼ばれます。オプションで、キーに値を与えることができます。

AWS マネジメントコンソール、AWS CLI、または Amazon RDS API を使用して、Amazon RDS リソースに対してタグを追加、一覧表示、削除できます。CLI または API を使用するときは、操作する RDS リソースの Amazon リソースネーム (ARN) を指定する必要があります。ARN の作成の詳細については、「[Amazon RDS 用 ARN の構築](USER_Tagging.ARN.Constructing.md)」をご参照ください。

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

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

以下の Aurora および Amazon RDS リソースにタグを付けることができます。
+ DB インスタンス
+ DB クラスター
+ Aurora グローバルクラスター
+ DB クラスターエンドポイント
+ リードレプリカ
+ DB スナップショット
+ DB クラスタースナップショット
+ リザーブド DB インスタンス
+ イベントサブスクリプション
+ DB オプショングループ
+ DB パラメータグループ
+ DB クラスターのパラメータグループ
+ DB サブネットグループ
+ RDS プロキシ
+ RDS Proxy エンドポイント
+ ブルー/グリーンデプロイ
+ ゼロ ETL 統合
+ 自動バックアップ
+ クラスター自動バックアップ

**注記**  
DB インスタンスにタグを付けると、Aurora はそれらのタグを関連する Performance Insights リソースに自動的に適用します。現在、AWS マネジメントコンソール を使用して、RDS プロキシおよび RDS プロキシエンドポイントにタグ付けすることはできません。

**Topics**
+ [Amazon RDS リソースタグを使用する理由](#Tagging.Purpose)
+ [Amazon RDS リソースタグの仕組み](#Overview.Tagging)
+ [Amazon RDS リソースのタグ付けのベストプラクティス](#Tagging.best-practices)
+ [DB クラスタースナップショットへのタグのコピー](#USER_Tagging.CopyTagsCluster)
+ [自動バックアップリソースのタグ付け](#USER_Tagging.AutomatedBackups)
+ [Amazon RDS でのタグの追加と削除](#Tagging.HowTo)
+ [チュートリアル: タグを使用して、停止する Aurora DB クラスターを指定します](Tagging.Aurora.Autostop.md)

## Amazon RDS リソースタグを使用する理由
<a name="Tagging.Purpose"></a>

タグを使用して、以下のことを行うことができます。
+ RDS リソースをアプリケーション、プロジェクト、部門、環境などに分類します。例えば、タグキーを使用してカテゴリを定義し、タグ値をそのカテゴリのアイテムにすることができます。タグ `environment=prod` を作成できます。または、`project` のタグキーと `Salix` のタグ値を定義して、Amazon RDS リソースが Salix プロジェクトに割り当てられていることを示すことができます。
+ リソース管理タスクを自動化します。例えば、`environment=test` にタグ付けされたインスタンスのウィンドウとは異なる `environment=prod` にタグ付けされたインスタンスのメンテナンスウィンドウを作成できます。インスタンスにタグ付けされた `environment=prod` の自動 DB スナップショットを設定することもできます。
+ IAM ポリシー内の RDS リソースへのアクセスを制御します。これを行うには、グローバル条件キー `aws:ResourceTag/tag-key` を使用します。例えば、ポリシーでは、`DBAdmin` グループ内のユーザーのみを `environment=prod` でタグ付けされた DB インスタンスの変更を許可できます。IAM ポリシーでタグ付けされたリソースへのアクセスの管理については、「*AWS Identity and Access Management ユーザーガイド*」の「[Amazon Aurora での Identity and Access Management](UsingWithRDS.IAM.md)」および「[AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。
+ タグに基づいてリソースをモニタリングします。例えば、`environment=prod` でタグ付けされた DB インスタンス用の Amazon CloudWatch ダッシュボードを作成できます。
+ 同様にタグ付けされたリソースの費用をグループ化することで、コストを追跡します。例えば、`project=Salix` で Salix プロジェクトに関連付けられた RDS リソースにタグ付けした場合、コストレポートを生成して、このプロジェクトに経費を割り当てることができます。詳細については、「[Amazon RDS でのタグを使用した AWS 請求の仕組み](#Tagging.Billing)」を参照してください。

## Amazon RDS リソースタグの仕組み
<a name="Overview.Tagging"></a>

AWS はタグに意味論的意味を適用しません。タグは単なる文字列として解釈されます。

**Topics**
+ [Amazon RDS のタグセット](#Overview.Tagging.Sets)
+ [Amazon RDS のタグ構造](#Overview.Tagging.Structure)
+ [タグ付けの対象となる Amazon RDS リソース](#Overview.Tagging.Resources)
+ [Amazon RDS でのタグを使用した AWS 請求の仕組み](#Tagging.Billing)

### Amazon RDS のタグセット
<a name="Overview.Tagging.Sets"></a>

すべての Amazon RDS リソースには、タグセットと呼ばれるコンテナがあります。コンテナには、リソースに割り当てられたすべてのタグが含まれます。リソースにはタグセットが 1 つだけあります。

タグセットには 0～50 個のタグが含まれます。既存のリソースタグと同じキーを持つタグを RDS リソースに追加した場合、既存の値は新しい値によって上書きされます。

### Amazon RDS のタグ構造
<a name="Overview.Tagging.Structure"></a>

RDS タグの構造は次のとおりです。

**タグキー**  
キーは、タグの必須の名前です。文字列値は、1～128 文字の Unicode 文字であり、`aws:` または `rds:` をプレフィックスとして使用することはできません。文字列には、一連の Unicode 文字、数字、空白、`_`、`.`、`:`、`/`、`=`、`+`、`-`、および `@` を含めることができます。Java 正規表現は `"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"` です。タグキーでは、大文字と小文字が区別されます。したがって、キー `project` と `Project` は区別されます。  
キーはタグセットに固有です。例えば、`project=Trinity` や `project=Xanadu` など、タグセットでキーが同じで値が異なるキーと値のペアは使用できません。

**タグ値**  
値は、タグのオプションの文字列値です。文字列値は、1～256 文字の Unicode 文字である必要があります。文字列には、一連の Unicode 文字、数字、空白、`_`、`.`、`:`、`/`、`=`、`+`、`-`、および `@` を含めることができます。Java 正規表現は `"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"` です。タグ値は大文字と小文字が区別されます。したがって、値 `prod` と `Prod` は区別されます。  
値はタグセット内で一意である必要はなく、null にできます。例えば、`project=Trinity` と `cost-center=Trinity` のタグセット内に 1 つのキーと値のペアを使用できます。

### タグ付けの対象となる Amazon RDS リソース
<a name="Overview.Tagging.Resources"></a>

次の Amazon RDS リソースにタグ付けができます。
+ DB インスタンス
+ DB クラスター
+ DB クラスターエンドポイント
+ リードレプリカ
+ DB スナップショット
+ DB クラスタースナップショット
+ リザーブド DB インスタンス
+ イベントサブスクリプション
+ DB オプショングループ
+ DB パラメータグループ
+ DB クラスターのパラメータグループ
+ DB サブネットグループ
+ RDS プロキシ
+ RDS Proxy エンドポイント
**注記**  
現在、AWS マネジメントコンソール を使用して、RDS プロキシおよび RDS プロキシエンドポイントにタグ付けすることはできません。
+ ブルー/グリーンデプロイ
+ ゼロ ETL 統合 (プレビュー)
+ 自動バックアップ
+ クラスター自動バックアップ

### Amazon RDS でのタグを使用した AWS 請求の仕組み
<a name="Tagging.Billing"></a>

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

#### DB クラスタースナップショットでのコスト配分タグの仕組み
<a name="Tagging.Billing.Snapshots"></a>

DB クラスタースナップショットにタグを追加することができます。ただし、このグループは請求書に反映されません。コスト配分タグを DB クラスタースナップショットに適用するには、以下の条件を満たす必要があります。
+ タグは親 DB インスタンスにアタッチする必要があります。
+ 親 DB インスタンスは、DB クラスタースナップショットと同じ AWS アカウント に存在する必要があります。
+ 親 DB インスタンスは、DB クラスタースナップショットと同じ AWS リージョン に存在する必要があります。

DB クラスタースナップショットは、親 DB インスタンスと同じ リージョンに存在しない場合、孤立したと見なされます。孤立した DB スナップショットは、コスト配分タグをサポートしません。孤立したスナップショットのコストは、タグのない単一の項目に集約されます。クロスアカウント DB クラスタースナップショットは、次の条件が満たされても孤立したとは見なされません。
+ 親 DB インスタンスと同じリージョンに存在します。
+ 親 DB インスタンスはソースアカウントによって所有されます。
**注記**  
親 DB インスタンスが別の アカウントによって所有されている場合、コスト配分タグはデスティネーションアカウントのクロスアカウントスナップショットに適用されません。

## Amazon RDS リソースのタグ付けのベストプラクティス
<a name="Tagging.best-practices"></a>

タグを使用するときには、以下のベストプラクティスに従うことをおすすめします。
+ 組織内のすべてのチームが従うタグ使用の規則を文書化します。特に、名前が記述的で一貫性があることを確認してください。例えば、`env:production` を持つリソースにタグ付けするのではなく、形式 `environment:prod` で標準化します。
**重要**  
個人を特定できる情報 (PII) などの機密情報や秘匿性の高い情報はタグに格納しないでください。
+ タグ付けを自動化して一貫性を確保します。例えば、以下の技法を使用できます。
  + CloudFormation テンプレートにタグを含めます。テンプレートを使用してリソースを作成すると、リソースは自動的にタグ付けされます。
  + AWS Lambda 関数を使用してタグを定義して適用します。
  + RDS リソースにタグを追加する手順を含む SSM ドキュメントを作成します。
+ タグは必要な場合にのみ使用します。1 つの RDS リソースに最大 50 個のタグを追加できますが、ベストプラクティスは、不要なタグの拡散や複雑さを回避することです。
+ タグの関連性と正確性を定期的に確認します。必要に応じて、古いタグを削除または変更します。
+ AWS マネジメントコンソール で AWS タグエディタを使用してタグを作成することを検討してください。タグエディタを使用して、RDS リソースを含む複数のサポートされている AWS リソースにタグを同時に追加できます。詳細については、*AWS リソースグループユーザーガイド*の[タグエディタ](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)を参照してください。

## DB クラスタースナップショットへのタグのコピー
<a name="USER_Tagging.CopyTagsCluster"></a>

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

次のアクションでタグが DB スナップショットにコピーされるように指定できます。
+ DB クラスターの作成
+ DB クラスターを復元します。
+ リードレプリカの作成
+ DB クラスターのスナップショットのコピー

**注記**  
場合によっては、[create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) AWS CLI コマンドの `--tags` パラメータに値を含めることができます。または、[CreateDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html) API オペレーションに少なくとも 1 つのタグを指定することもできます。このような場合、RDS はソース DB インスタンスから新しい DB スナップショットにタグをコピーしません。この機能は、ソース DB インスタンスの `--copy-tags-to-snapshot` (`CopyTagsToSnapshot`) オプションが有効になっている場合でも、適用されます。  
このアプローチを使用すると、DB スナップショットから DB インスタンスのコピーを作成できます。この方法では、新しい DB インスタンスに適用されないタグを追加する必要がなくなります。DB スナップショットは、AWS CLI`create-db-snapshot`コマンド (または`CreateDBSnapshot` RDS API オペレーション) を使用して作成します。DB スナップショットを作成した後、このトピックで説明しているように、タグを追加することができます。

## 自動バックアップリソースのタグ付け
<a name="USER_Tagging.AutomatedBackups"></a>

自動バックアップリソースは、バックアップ保持期間値を 0 から 0 以上に設定したときに作成されます。`--tag-specifications` パラメータを使用して、作成時にインスタンスまたはクラスターの自動バックアップリソースにタグを付けることができます。

### タグ仕様パラメータ
<a name="USER_Tagging.AutomatedBackups.TagSpecifications"></a>

`--tag-specifications` リクエストパラメータをサポートする API ([create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)、[restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)、[create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) など) は、作成時に自動バックアップ (リソースタイプ: `auto-backup` または `cluster-auto-backup`) にタグを付けることができます。

#### クラスター自動バックアップのタグ付け
<a name="USER_Tagging.AutomatedBackups.TagSpecifications.Cluster"></a>

自動バックアップが有効になっている DB クラスターを作成するときは、`ResourceType=cluster-auto-backup` を指定した `--tag-specifications` を使用します。

**注記**  
自動バックアップタグは、ソース DB インスタンスタグ、DB クラスタータグ、または DB スナップショットタグとは独立しています。

## Amazon RDS でのタグの追加と削除
<a name="Tagging.HowTo"></a>

以下の操作を行うことができます。
+ リソースの作成時にタグを作成します。例えば、AWS CLI コマンド `create-db-instance` を実行するときなどです。
+ 既存のリソースにタグを追加するには、コマンド `add-tags-to-resource` を使用します。
+ コマンド `list-tags-for-resource` を使用して、特定のリソースに関連付けられたタグを一覧表示します。
+ コマンド `add-tags-to-resource` を使用してタグを更新します。
+ コマンド `remove-tags-from-resource` を使用して、リソースからタグを削除します。

次の手順は、DB インスタンスおよび Aurora DB クラスターに関連するリソースに対して一般的なタグ付け操作を実行する方法を示しています。タグはリソース承認用にキャッシュに格納されます。このため、Amazon RDS リソースにタグを追加または更新すると、変更が利用可能になるまでに数分かかることがあります。

### コンソール
<a name="USER_Tagging.CON"></a>

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

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

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

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

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

1. [**Add**] を選択します。[**タグの追加**] ウィンドウが表示されます。  
![\[[タグの追加] ウィンドウ\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/RDSConsoleTagging5.png)

1. [**タグキー**] と [**値**] の値を入力します。

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

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

1. [**Add**] を選択します。

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

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

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

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

1. 削除するタグを選択します。  
![\[タグセクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/images/RDSConsoleTagging6.png)

1. [**削除**] を選択し、[**Delete tags**] (タグの削除) ウィンドウから [**削除**] を選択します。

### AWS CLI
<a name="USER_Tagging.CLI"></a>

AWS CLI を使用して DB インスタンスのタグを追加、一覧表示、または削除できます。
+ Amazon RDS リソースに 1 つ以上のタグを追加するには、AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/rds/add-tags-to-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-tags-to-resource.html) を使用します。
+ Amazon RDS リソースのタグを一覧表示するには、AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/rds/list-tags-for-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/list-tags-for-resource.html) を使用します。
+ Amazon RDS リソースから 1 つ以上のタグを削除するには、AWS CLI コマンド [https://docs.aws.amazon.com/cli/latest/reference/rds/remove-tags-from-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/remove-tags-from-resource.html) を使用します。

必要な ARN を作成する方法の詳細については、「[Amazon RDS 用 ARN の構築](USER_Tagging.ARN.Constructing.md)」を参照してください。

### RDS API
<a name="USER_Tagging.API"></a>

Amazon RDS API を使用して DB インスタンスのタグを追加、一覧表示、または削除できます。
+ Amazon RDS リソースにタグを追加するには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html) オペレーションを使用します。
+ Amazon RDS リソースに割り当てられているタグを一覧表示するには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html) を使用します。
+ Amazon RDS リソースからタグを削除するには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html) オペレーションを使用します。

必要な ARN を作成する方法の詳細については、「[Amazon RDS 用 ARN の構築](USER_Tagging.ARN.Constructing.md)」を参照してください。

Amazon RDS API を使用して XML を操作する場合、タグでは以下のスキーマを使用します。

```
 1. <Tagging>
 2.       <TagSet>
 3.           <Tag>
 4.               <Key>Project</Key>
 5.               <Value>Trinity</Value>
 6.           </Tag>
 7.           <Tag>
 8.               <Key>User</Key>
 9.               <Value>Jones</Value>
10.           </Tag>
11.       </TagSet>
12.   </Tagging>
```

以下の表に示しているのは、使用可能な XML タグとその特性のリストです。`Key` と `Value` の値は、大文字と小文字が区別されます。例えば、`project=Trinity` と `PROJECT=Trinity` は別個のタグです。


****  
<a name="user-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.html)

# チュートリアル: タグを使用して、停止する Aurora DB クラスターを指定します
<a name="Tagging.Aurora.Autostop"></a>

 開発環境またはテスト環境で多数の 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
   ```

1. このクラスターにタグ `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
   ```

1. タグがクラスターに存在することを確認します。

   これらのコマンドは、クラスターのタグ情報を 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
   ```

1. `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 インスタンスクラスに変更するように指定することもできます。