本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學︰使用標籤指定要停止哪些 Aurora 資料庫叢集
假設您正在開發或測試環境中建立大量 Aurora 資料庫叢集。您必須保留所有這些叢集數天。有些叢集會在夜間執行測試。其他叢集可以在夜間停止,並在隔天再次啟動。下列範例顯示如何將標籤指派給適合在夜間停止的叢集。然後,該範例會顯示腳本如何檢測哪些叢集具有該標籤,然後停止這些叢集。在這個範例中,鍵值對的值部分並不重要。stoppable
標籤的存在表示叢集具有此使用者定義的屬性。
若要指定要停止的 Aurora 資料庫叢集
-
決定ARN您要指定為可停止的叢集。
用APIs於標籤的指令和使用ARNs。如此一來,他們就可以在 AWS 區域、 AWS 帳戶以及可能具有相同簡短名稱的不同類型資源之間順暢運作。您可以在叢集上操作的CLI命令中指定,ARN而不是叢集 ID。將您自己叢集的名稱替換為
dev-test-cluster
。 在使用ARN參數的後續命令中,請替換您自己ARN的叢集。包ARN括您自己的 AWS 帳戶 ID 和叢集所在 AWS 地區的名稱。$
aws rds describe-db-clusters --db-cluster-identifierdev-test-cluster
\ --query "*[].{DBClusterArn:DBClusterArn}" --output textarn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
-
將標籤
stoppable
新增至此叢集。您會選擇此標籤的名稱。這種方法表示您可以避免設計命名慣例,對名稱中的所有相關資訊進行編碼。在這類慣例中,您可能會對資料庫執行個體名稱或其他資源名稱中的資訊進行編碼。由於此範例會將標籤視為存在或不存在的屬性,因此會省略
Value=
參數的--tags
部分。$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
\ --tags Key=stoppable -
確認標籤存在於叢集中。
這些命令會以標籤分隔的JSON格式和純文字擷取叢集的標籤資訊。
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
--output textTAGLIST stoppable
-
若要停止指定為
stoppable
的所有叢集,請準備所有叢集的清單。對清單執行迴圈並檢查每個叢集是否標記了相關屬性。此 Linux 範例使用 shell 指令碼將叢集清單儲存ARNs至暫存檔案,然後針對每個叢集執行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 doneCluster 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 textarn: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 資料庫叢集。在這裡,您可以指定一些要在每天結束時刪除的叢集,或者只刪除讀取器資料庫執行個體。或者,您可以指定一些,在預期的低使用量期間將其資料庫執行個體變更為小型資料庫執行個體類別。