標記 Amazon RDS 資源 - Amazon Relational Database Service

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

標記 Amazon RDS 資源

Amazon RDS 標籤是您定義並與 Amazon RDS 資源 (例如資料庫執行個體或資料庫快照) 建立關聯的名稱-值組。此名稱叫做金鑰。或者,您可以為鍵提供值。

您可以使用 AWS Management Console AWS CLI、或 Amazon RDS API 在 Amazon RDS 資源上新增、列出和刪除標籤。使用 CLI 或 API 時,請務必提供 RDS 資源的 Amazon Resource Name (ARN) 來使用。如需建構 ARN 的詳細資訊,請參閱 建構 Amazon RDS 的 ARN

為什麼要使用 Amazon RDS 資源標籤?

您可以使用標籤來執行下列作業:

  • 依應用程式、專案、部門、環境等對 RDS 資源進行分類。例如,您可以使用標籤鍵來定義品類,其中標籤值是此品類中的項目。您可以建立標籤environment=prod。或者,您可以定義的標籤金鑰project和標籤值Salix,這表示已將 Amazon RDS 資源指派給 Salix 專案。

  • 自動化資源管理工作。例如,您可以為加上標籤的例證建立維護時段,environment=prod這些例證與加上標籤的例證視窗不同environment=test。您也可以為標記的執行個體設定自動資料庫快照environment=prod

  • 控制 IAM 政策中對 RDS 資源的存取。您可以使用全域 aws:ResourceTag/tag-key 條件索引鍵來執行此操作。例如,政策可能只允許DBAdmin群組中的使用者修改標記為的資料庫執行個體environment=prod。如需使用 IAM 政策管理已標記資源存取權的相關資訊,請參閱 AWS Identity Amazon RDS 的 Identity and access management and Access Management 使用者指南中的和控制 AWS 資源取。

  • 根據標籤監視資源。例如,您可以為標記為的資料庫執行個體建立 Amazon CloudWatch 儀表板environment=prod

  • 透過將類似標記資源的費用分組來追蹤成本。例如,如果您使用標記與 Salix 專案相關聯的 RDS 資源project=Salix,您可以產生成本報告,並將費用分配給此專案。如需詳細資訊,請參閱 在 Amazon RDS 中使用標籤的 AWS 計費方式

Amazon RDS 資源標籤的工作原理

AWS 不對您的標籤應用任何語義含義。標籤會嚴格解譯為字元字串。

Amazon RDS 中的標籤組

每個 Amazon RDS 資源都有一個稱為標籤集的容器。容器包含指派給資源的所有標籤。資源只有一個標籤組。

標籤組包含 0—50 個標籤。如果您將標籤新增至 RDS 資源,而其擁有與現有標籤相同的金鑰,則新值會覆寫舊值。

Amazon RDS 中的標籤結構

RDS 標籤的結構如下所示:

標籤鍵

索引鍵是標籤的必要名稱。字串值的長度必須為 1—128 個 Unicode 字元,且不能加上或前置字元。aws: rds:字串只能包含 Unicode 字母、數字、空白字元、、_、、.:/=+-、和@。Java 正則表達式是"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$". 標籤鍵區分大小寫。因此,鍵projectProject是不同的。

索引鍵對於標籤組而言是唯一的。例如,您不能在標籤組中擁有金鑰組中的金鑰配對,其金鑰相同但具有不同的值,例如project=Trinityproject=Xanadu

標籤值

該值是標籤的可選字符串值。字串值的長度必須為 1—256 個萬國碼字元。字串只能包含 Unicode 字母、數字、空白字元、、_、、.:/=+-、和@。Java 正則表達式是"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$". 標籤值區分大小寫。因此,值prodProd是不同的。

值不需要在標籤集中是唯一的,並且可以為 null。例如,您可以在 project=Trinitycost-center=Trinity 標籤集中有一個鍵值對。

符合標記資格的 Amazon RDS 資源

您可以標記以下 Amazon RDS 資源:

  • 資料庫執行個體

  • 資料庫叢集

  • 資料庫叢集端點

  • 僅供讀取複本

  • 資料庫快照

  • 資料庫叢集快照

  • 預留資料庫執行個體

  • 事件訂閱

  • 資料庫選項群組

  • 資料庫參數群組

  • 資料庫叢集參數群組

  • 資料庫子網路群組

  • RDS Proxy

  • RDS Proxy 端點

    注意

    目前無法使用 AWS Management Console標記 RDS Proxy 和 RDS Proxy 端點。

  • 藍/綠部署

  • 零 ETL 整合 (預覽)

在 Amazon RDS 中使用標籤的 AWS 計費方式

使用標籤來組織帳 AWS 單,以反映您自己的成本結構。要做到這一點,註冊以獲取包含標籤鍵值的 AWS 帳戶 帳單。接著,若要查看合併資源的成本,請根據具有相同標籤鍵值的資源來整理您的帳單資訊。例如,您可以使用特定應用程式名稱來標記數個資源,然後整理帳單資訊以查看該應用程式跨數項服務的總成本。如需詳細資訊,請參閱《AWS Billing 》使用者指南中的使用成本分配標籤

成本分配標籤如何搭配資料庫快照搭配

您可以將標籤新增至資料庫快照。不過,您的帳單不會反映這個分組。若要套用至資料庫快照的成本配置標記,必須符合下列條件:

  • 標籤必須附加至父資料庫執行個體。

  • 父資料庫執行個體必須與資料庫快照相同 AWS 帳戶 。

  • 父資料庫執行個體必須與資料庫快照相同 AWS 區域 。

如果資料庫快照不在與父資料庫執行個體相同的區域中,則資料庫叢集快照會被視為孤立。孤立快照的成本會彙總到單一未標記的行項目中。滿足下列條件時,跨帳戶資料庫快照不會被視為孤立:

  • 它們與父資料庫執行個體位於相同的區域中。

  • 父資料庫執行個體由來源帳戶擁有。

    注意

    如果父資料庫執行個體由不同帳戶擁有,則成本分配標籤不適用於目標帳戶中的跨帳戶快照。

標記 Amazon RDS 資源的最佳實務

當您使用標籤時,我們建議您遵守下列最佳做法:

  • 標籤使用的文件慣例會遵循組織中的所有專案團隊。特別是,請確保名稱具有描述性且一致。例如,在格式上標準化,environment:prod而不是使env:production用標記某些資源。

    重要

    請勿將個人識別資訊 (PII) 或其他機密或敏感資訊儲存在標籤中。

  • 自動標記以確保一致性。例如,您可以使用下列技巧:

    • 在 AWS CloudFormation 範本中包含標籤。當您使用範本建立資源時,會自動標記資源。

    • 使用 AWS Lambda 函數定義和應用標籤。

    • 建立 SSM 文件,其中包含將標籤新增至 RDS 資源的步驟。

  • 僅在必要時使用標籤。您最多可以為單一 RDS 資源新增 50 個標籤,但最佳做法是避免不必要的標籤擴散和複雜性。

  • 定期檢閱標籤以確保相關性和準確性。視需要移除或修改過時的標籤。

  • 請考慮使用中的標 AWS 籤編輯器建立標籤 AWS Management Console。您可以使用標籤編輯器同時將標籤新增至多個支援的資 AWS 源,包括 RDS 資源。如需詳細資訊,請參閱 AWS Resource Groups 使用者指南中的標籤編輯器

在 Amazon RDS 中管理標籤

您可以執行下列作業:

  • 在建立資源時建立標籤,例如執行指 AWS CLI 令時create-db-instance

  • 使用指令將標籤新增至現有資源add-tags-to-resource

  • 使用指令列出與特定資源相關聯的標籤list-tags-for-resource

  • 使用指令更新標籤add-tags-to-resource

  • 使用指令從資源中移除標籤remove-tags-from-resource

下列程序顯示如何在與資料庫執行個體相關的資源上執行一般標記作業。請注意,標籤會進行快取,以供授權使用。因此,當您在 Amazon RDS 資源上新增或更新標籤時,可能需要經過幾分鐘的時間才能進行修改。

設定 Amazon RDS 資源標籤的程序類似為所有資源設定標籤的程序。以下程序會說明如何為 Amazon RDS 資料庫執行個體新增標籤。

新增標籤至資料庫資訊個體
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)

    注意

    若要篩選 Databases (資料庫) 窗格中的資料庫執行個體清單,請在 Filter databases (篩選資料庫) 中輸入文字字串。只有包含此字串的資料庫執行個體會顯示出來。

  3. 選擇您要標記的資料庫執行個體名稱,以顯示其詳細資訊。

  4. 在詳細內容區段,向下捲動至 Tags (標籤) 區段。

  5. 選擇 Add (新增)。此時將會顯示 Add tags (新增標籤) 視窗。

    新增標籤視窗
  6. 輸入 Tag key (標籤索引鍵)Value (值) 的值。

  7. 若要新增另一個標籤,您可以選擇 Add another Tag (新增另一個標籤),然後輸入其 Tag key (標籤索引鍵)Value (值) 的值。

    視需要重複此步驟。

  8. 選擇 Add (新增)。

從資料庫資訊個體刪除標籤
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)

    注意

    若要篩選 Databases (資料庫) 窗格中的資料庫執行個體清單,請在 Filter databases (篩選資料庫) 方塊中輸入文字字串。只有包含此字串的資料庫執行個體會顯示出來。

  3. 選擇資料庫執行個體的名稱,以顯示其詳細資訊。

  4. 在詳細內容區段,向下捲動至 Tags (標籤) 區段。

  5. 選擇您要刪除的標籤。

    Tags (標籤) 區段
  6. 選擇 Delete (刪除),接著在 Delete tags (刪除標籤)​ 視窗中選擇 Delete (刪除)

您可以使用 AWS CLI新增、列出或移除資料庫執行個體的標籤。

若要進一步了解如何建構必要的 ARN,請參閱建構 Amazon RDS 的 ARN

您可以使用 Amazon RDS API 新增、列出或移除資料庫執行個體的標籤。

若要進一步了解如何建構必要的 ARN,請參閱建構 Amazon RDS 的 ARN

搭配 XML 使用 Amazon RDS API 時,標籤使用以下結構描述:

<Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging>

下表列出允許的 XML 標籤及其特性。Key和的值區分Value大小寫。例如,project=TrinityPROJECT=Trinity是不同的標籤。

標記元素 描述
TagSet 標籤集是一個容器,其中存放指派給 Amazon RDS 資源的所有標籤。每個資源只能有一個標籤集。您 TagSet 只能透過 Amazon RDS API 使用。
標籤 標籤是使用者定義的鍵值組。標籤集內可以有 1 到 50 個標籤。
Key

鍵是標籤的必要名稱。如需限制,請參閱Amazon RDS 中的標籤結構

字串值長度可以是 1 到 128 個 Unicode 字元,不可在前面加上 aws:rds:。該字串僅能包含一組 Unicode 字母、數字、空格、「_」、「.」、「/」、「=」、「+」、「-」(Java regex:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。

鍵在標籤集內必須是唯一的。舉例來說,標籤集不能擁有索引鍵相同,但值不同的索引鍵組,例如:project/Trinity 和 project/Xanadu。

Value

值是標籤的選用值。如需限制,請參閱Amazon RDS 中的標籤結構

字串值長度可以是 1 到 256 個 Unicode 字元,不可在前面加上 aws:rds:。該字串僅能包含一組 Unicode 字母、數字、空格、「_」、「.」、「/」、「=」、「+」、「-」(Java regex:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$")。

標籤組中的值不必是唯一的,並且可以是 null。例如,在 project/Trinity 及 cost-center/Trinity 標籤集中,均能擁有一個索引鍵/值組。

將標籤複製到資料庫快照

當您建立或還原資料庫執行個體時,您可以指定標籤從資料庫執行個體複製到資料庫執行個體的快照。複製標籤可確保資料庫快照的中繼資料符合來源資料庫執行個體的中繼資料。它也確保資料庫快照的任何存取政策也符合來源資料庫執行個體的存取政策。

您可以指定標籤複製到資料庫快照以用於下列動作:

  • 建立資料庫執行個體。

  • 還原資料庫執行個體。

  • 建立僅供讀取複本。

  • 複製資料庫快照。

大多數情況下,預設為不複製標籤。但是從資料庫快照還原資料庫執行個體時,RDS Proxy 會檢查您是否指定了新標籤。如果有指定,便會將新標籤新增到還原的資料庫執行個體中。如果沒有新標籤,RDS 會在建立快照時將來源資料庫執行個體中的標籤新增到還原的資料庫執行個體。

為了防止將來源資料庫執行個體中的標籤新增到還原的資料庫執行個體,建議您在還原資料庫執行個體時指定新標籤。

注意

在某些情況下,您可能會包含建立- AWS CLI db-snapshot 指令的--tags參數值。或者,您可以至少提供一個標籤給 CreateDBSnapshot API 作業。在這些情況下,RDS 不會將標籤從來源資料庫執行個體複製到新的資料庫快照。即使來源資料庫執行個體開啟了 --copy-tags-to-snapshot (CopyTagsToSnapshot) 選項,此功能仍適用。

如果採取此方法,您可以從資料庫快照建立資料庫執行個體的複本。這種方法可避免新增不適用於新資料庫執行個體的標籤。您可以使用 AWS CLI create-db-snapshot命令 (或 CreateDBSnapshot RDS API 作業) 建立資料庫快照集。在建立資料庫快照之後,您可以依照本主題稍後所述來新增標籤。

教學課程:使用標籤指定要停止的資料庫執行個體

本教學課程假設您在開發或測試環境中有多個資料庫執行個體。您需要將這些資料庫執行個體保留數天。有些資料庫執行個體會在一夜之間執行測試,而其他資料庫執行個體則可以在一夜之間停止,

下列教學課程說明如何將標籤指派給適合在夜間停止的資料庫執行個體。本教學課程說明指令碼如何偵測哪些資料庫執行個體具有標籤,然後停止已標記的資料庫執行個體。在這個範例中,鍵值對的值部分並不重要。stoppable 標籤的存在表示資料庫執行個體具有此使用者定義的屬性。

在下列教學課程中,用於標記的命令和 API 可與 ARN 搭配使用,這可讓 RDS 在 AWS 區域、 AWS 帳戶和可能具有相同短名稱的不同類型資源之間順暢運作。您可以在於資料庫執行個體上操作的 CLI 命令中指定 ARN 而不是資料庫執行個體 ID。

若要指定要停止哪些資料庫執行個體
  1. 確定您要指定為可停止的資料庫執行個體 ARN。

    在下列範例中,請將您自己的資料庫執行個體名稱取代開發測試- DB 執行個體。在使用 ARN 參數的後續命令中,替換您自己的資料庫執行個體 ARN。ARN 包含您自己的 AWS 帳戶 ID 和資料庫執行個體所在 AWS 地區的名稱。

    $ aws rds describe-db-instances --db-instance-identifier dev-test-db-instance \ --query "*[].{DBInstance:DBInstanceArn}" --output text arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
  2. 將標籤 stoppable 新增至此資料庫執行個體。

    您會選擇此標籤的名稱。由於此範例會將標籤視為存在或不存在的屬性,因此會省略 Value= 參數的 --tags 部分。這種方法表示您可以避免設計命名慣例,對名稱中的所有相關資訊進行編碼。在這類慣例中,您可能會對資料庫執行個體名稱或其他資源名稱中的資訊進行編碼。

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \ --tags Key=stoppable
  3. 確認標籤存在於資料庫執行個體中。

    下列命令會以 JSON 格式和純定位鍵分隔文字擷取資料庫執行個體的標籤資訊。

    $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance { "TagList": [ { "Key": "stoppable", "Value": "" } ] } aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance --output text TAGLIST stoppable
  4. 停止指定為的所有資料庫執行個體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 done DB 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 狀態的執行個體清單。指令碼可以忽略已停止的資料庫執行個體,因為它們會有不同的狀態值,例如 stoppedstopping

$ aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output text arn: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
提示

您可以使用指派標籤,並尋找具有這些標籤的資料庫執行個體,以其他方式降低成本。例如,採取此案例搭配用於開發和測試的資料庫執行個體。在此情況下,您可以指定一些要在每天結束時刪除的資料庫執行個體。或者,您可以指定它們,在預期的低使用量期間將其資料庫執行個體變更為小型資料庫執行個體類別。