

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 教學︰使用標籤指定要停止哪些 Aurora 資料庫叢集
<a name="Tagging.Aurora.Autostop"></a>

 假設您正在開發或測試環境中建立大量 Aurora 資料庫叢集。您必須保留所有這些叢集數天。有些叢集會在夜間執行測試。其他叢集可以在夜間停止，並在隔天再次啟動。下列範例顯示如何將標籤指派給適合在夜間停止的叢集。然後，該範例會顯示腳本如何檢測哪些叢集具有該標籤，然後停止這些叢集。在這個範例中，鍵值對的值部分並不重要。`stoppable` 標籤的存在表示叢集具有此使用者定義的屬性。

**若要指定要停止的 Aurora 資料庫叢集**

1. 確定您要指定為可停止的叢集 ARN。

   用於標記的命令和 API 可以與 ARN 一起使用。如此一來，他們就可以在 AWS 區域、AWS 帳戶以及可能具有相同短名稱的不同類型資源之間順暢運作。您可以在於叢集上操作的 CLI 命令中指定 ARN 而不是叢集 ID。將您自己的叢集名稱替換為 *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` 新增至此叢集。

   您會選擇此標籤的名稱。這種方法表示您可以避免設計命名慣例，對名稱中的所有相關資訊進行編碼。在這類慣例中，您可能會對資料庫執行個體名稱或其他資源名稱中的資訊進行編碼。由於此範例會將標籤視為存在或不存在的屬性，因此會省略 `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 範例使用 shell 指令碼將叢集 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 資料庫叢集。在這裡，您可以指定一些要在每天結束時刪除的叢集，或者只刪除讀取器資料庫執行個體。或者，您可以指定一些，在預期的低使用量期間將其資料庫執行個體變更為小型資料庫執行個體類別。