本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用標籤指定要停止的資料庫執行個體
本教學課程假設您在開發或測試環境中有多個資料庫執行個體。您需要將這些資料庫執行個體保留數天。有些資料庫執行個體會在一夜之間執行測試,而其他資料庫執行個體則可以在一夜之間停止,
下列教學課程說明如何將標籤指派給適合在夜間停止的資料庫執行個體。本教學課程說明指令碼如何偵測哪些資料庫執行個體具有標籤,然後停止已標記的資料庫執行個體。在這個範例中,鍵值對的值部分並不重要。stoppable
標籤的存在表示資料庫執行個體具有此使用者定義的屬性。
在下面的教程中,命令和APIs標記可以使用ARNs,這些命令可RDS以在 AWS 區域, AWS 帳戶和可能具有相同短名稱的不同類型的資源之間無縫地工作。您可以在資料庫執行個體上運作的CLI命令中指定,ARN而非資料庫執行個體 ID。
若要指定要停止哪些資料庫執行個體
-
決定您要指定為可停止ARN的資料庫執行個體。
在下列範例中,請將您自己的資料庫執行個體名稱取代為
dev-test-db-instance
。 在使用ARN參數的後續命令中,請替換您自己ARN的資料庫執行個體。ARN包括您自己的 AWS 帳戶 ID 和資料庫執行個體所在 AWS 地區的名稱。$
aws rds describe-db-instances --db-instance-identifierdev-test-db-instance
\ --query "*[].{DBInstance:DBInstanceArn}" --output textarn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
-
將標籤
stoppable
新增至此資料庫執行個體。您會選擇此標籤的名稱。由於此範例會將標籤視為存在或不存在的屬性,因此會省略
Value=
參數的--tags
部分。這種方法表示您可以避免設計命名慣例,對名稱中的所有相關資訊進行編碼。在這類慣例中,您可能會對資料庫執行個體名稱或其他資源名稱中的資訊進行編碼。$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
\ --tags Key=stoppable -
確認標籤存在於資料庫執行個體中。
下列命令會以標籤分隔的JSON格式和純文字擷取資料庫執行個體的標籤資訊。
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
--output textTAGLIST stoppable
-
停止指定為的所有資料庫執行個體
stoppable
。下列範例會建立列出所有資料庫執行個體的文字檔。shell 命令會循環瀏覽清單,並檢查每個資料庫執行個體是否使用相關屬性標記,並
aws rds stop-db-instance
針對每個資料庫執行個體執行命令執行。$
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 doneDB 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", ...
您可以在每天結束時執行類似前面的指令碼,以確保停止非必要的資料庫執行個體。您也可以使用 cron
之類的公用程式來排程要執行的任務,例如每天晚上檢查。例如,如果某些資料庫執行個體錯誤地保持執行中狀態,您可以執行此操作。在這裡,您可以微調準備要檢查的資料庫執行個體清單的命令。
下列命令會產生資料庫執行個體的清單,但只會產生 available
狀態的執行個體清單。指令碼可以忽略已停止的資料庫執行個體,因為它們會有不同的狀態值,例如 stopped
或 stopping
。
$
aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output textarn: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
提示
您可以使用指派標籤,並尋找具有這些標籤的資料庫執行個體,以其他方式降低成本。例如,採取此案例搭配用於開發和測試的資料庫執行個體。在此情況下,您可以指定一些要在每天結束時刪除的資料庫執行個體。或者,您可以指定它們,在預期的低使用量期間將其資料庫執行個體變更為小型資料庫執行個體類別。