根據預設,Compute Engine 會將刪除的標準快照保留在回收桶中,保留期限為三天,之後就會永久刪除快照。您可以修改資源回收筒保留政策,縮短保留期限或停用資源回收筒。
本文說明如何查看及設定回收桶保留政策。
如要查看回收桶內容,或從回收桶復原快照,請參閱「管理回收桶」。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
所需角色和權限
如要取得查看及管理資源回收筒保留政策所需的權限,請要求管理員授予您專案的「Compute 管理員」 (roles/compute.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備查看及管理回收桶資料保留政策所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要查看及管理回收桶資料保留政策,必須具備下列權限:
-
如要在資源回收筒保留政策中設定、修改及刪除規則,請按照下列步驟操作:
compute.snapshotRecycleBinPolicy.patch -
查看回收桶資料保留政策:
compute.snapshotRecycleBinPolicy.get -
如要查看標準快照的回收桶保留政策,請按一下快照上的
compute.snapshots.getEffectiveRecycleBinRule,然後選取「查看回收桶保留政策」。
回收桶保留政策的運作方式
資源回收筒保留政策是一組全域規則,可定義所有專案和組織中標準快照的保留期限。
回收桶資料保留政策具有下列功能:
三天的預設保留期限稱為「系統預設規則」。您無法移除系統預設規則,但可以覆寫。
如要覆寫系統預設規則,您可以新增分別適用於專案或機構的專案或機構預設規則。您也可以在回收桶資料保留政策中,新增以標記為基礎的規則。
資料保留政策中的規則衝突會以下列方式解決:
- 標記規則會覆寫專案和組織的預設規則。
- 如果標準快照適用多項標記規則,則會套用保留期限最長的規則。不過,即使專案預設規則的保留期限較長,也不會覆寫標記規則。
- 專案預設規則會覆寫機構預設規則。
- 如果沒有任何規則適用於標準快照,系統會套用系統預設規則。
詳情請參閱「資源回收筒保留政策中的規則階層」。
雖然 Google 不建議停用資源回收筒,但您可以為專案、機構或標記建立保留期限為零天的規則,藉此停用資源回收筒。刪除標準快照時,系統會立即清除受規則限制的所有快照。
回收桶資料保留政策的變更不會套用至現有的可復原快照,也就是回收桶中現有的已刪除標準快照。
限制
- 系統僅支援標準快照。系統會立即永久刪除封存快照、即時快照、磁碟和映像檔。
- 回收桶資料保留政策的變更不會套用至現有的可復原快照,也就是回收桶中現有的已刪除標準快照。
- 如要為標記指定資料保留政策規則,該標記必須已存在。
- 您只能為專案、機構或標記設定保留政策規則。
- 如果您為標記設定保留政策規則,保留政策只會套用至有該標記的標準快照。如果封存快照、即時快照、磁碟和任何其他資源有該標記,則不相容於資源回收筒,刪除後會永久清除。
設定或移除專案/組織的預設保留期限
如要在專案或機構中覆寫系統預設規則 (3 天),或停用資源回收桶,請為專案或機構設定預設保留政策規則。
您可以使用 gcloud CLI 或 REST。
gcloud CLI
使用 gcloud beta compute snapshot-recycle-bin-policy update 指令。使用 --set-rule=default 旗標設定預設資料保留政策規則,並使用 --standard-snapshots-retention-duration-days 旗標指定規則的保留期限。
如要為機構設定預設保留政策,請使用下列指令:
gcloud beta compute snapshot-recycle-bin-policy update \ --set-rule=default \ --standard-snapshots-retention-duration-days=DEFAULT_RETENTION_PERIOD_DAYS \ --organization=ORGANIZATION_ID
將下列內容替換為對應的值:
DEFAULT_RETENTION_PERIOD_DAYS:專案或機構的保留期限 (以天為單位)。請指定0到7之間的值。如要停用資源回收筒,請指定0。ORGANIZATION_ID:選用。組織 ID:要設定預設保留規則的組織 ID。例如:123456789012。您必須指定組織 ID 或專案 ID,但不能同時指定兩者。
如要設定專案的預設保留政策,請在上述指令中將
--organization旗標替換為--project=<var>PROJECT_ID</var>,其中PROJECT_ID是專案 ID。如要移除專案或機構的預設保留規則,請使用相同指令,但指定
--remove-rule=default,而非--set-rule=default。舉例來說,如要移除機構的預設保留政策規則,請按照下列步驟操作:
gcloud beta compute snapshot-recycle-bin-policy update \ --organization=ORGANIZATION_ID \ --remove-rule=default
將
ORGANIZATION_ID替換為機構 ID。
REST
建構對 snapshotRecycleBinPolicy 方法的 PATCH 要求。
在要求主體中,加入 rules 物件,指定預設的資源回收筒保留期限 (以天為單位)。
如要為專案新增或修改保留政策,請按照下列步驟操作:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy { "rules": { "default": { "standardSnapshots": { "retentionDurationDays": DEFAULT_RETENTION_PERIOD_DAYS } } } }將下列項目替換為對應的值:
PROJECT_ID:專案 ID,例如dev-project。DEFAULT_RETENTION_PERIOD_DAYS:預設保留期限 (以天為單位)。指定介於0至7之間的值。 如要停用資源回收筒,請指定0。
如要為機構新增或修改保留政策,請發出
PATCH要求 (如上例所示),但使用下列網址:PATCH https://compute.googleapis.com/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/
要求主體與上一個範例相同。
將
ORGANIZATION_ID替換為機構 ID。例如:123456789012。如要移除專案或組織的預設保留規則,請發出類似的
PATCH要求,但為default規則指定null。舉例來說,如要移除機構的預設保留規則,請按照下列步驟操作:
PATCH https://compute.googleapis.com/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/ { "rules": { "default": null } }將
ORGANIZATION_ID替換為機構 ID。
設定或移除標記的保留政策
如要為具有特定標記的標準快照設定特定保留期限,請在專案或組織層級設定以標記為準的規則。以代碼為準的規則會覆寫專案或機構的預設規則,並具有下列特徵:
- 組織或專案層級的標記規則,會分別套用至組織或專案中所有具備該標記的標準快照。
只有在專案層級規則的保留期限較長時,專案層級標記規則才會覆寫組織層級標記規則。
舉例來說,如果專案層級的標記規則保留期限為一天,組織層級的標記規則保留期限為兩天,則系統會採用組織層級的規則。
詳情請參閱「資源回收筒保留政策中的規則階層」。
您可以使用 gcloud CLI 或 REST。
gcloud CLI
如要為標記設定資料保留政策規則,請使用 gcloud beta compute snapshot-recycle-bin-policy update 指令。使用 --set-rule 標記指定標記名稱,並使用 --standard-snapshots-retention-duration-days 標記指定標記的資源回收筒保留期限 (以天為單位)。
gcloud beta compute snapshot-recycle-bin-policy update \ --set-rule=TAG_NAMESPACED_NAME \ --standard-snapshots-retention-duration-days=RETENTION_PERIOD_DAYS \ --organization=ORGANIZATION_ID
將下列項目替換為對應的值:
TAG_NAMESPACED_NAME:標記的命名空間限定名稱,包括其值。例如:my-project-id/tag-key/tag-value或my-organization-id/tag-key/tag-value。RETENTION_PERIOD_DAYS:保留期限 (以天為單位),從0到7。如要為具有這個標記的快照停用回收桶,請指定0。ORGANIZATION_ID:選填。 規則適用的組織 ID。例如:123456789012。您必須指定組織 ID 或專案 ID,但不能同時指定兩者。
如要為專案設定預設保留政策,請在上述指令中將 --organization 旗標替換為 --project=<var>PROJECT_ID</var>,其中 PROJECT_ID 是專案的 ID。
如要移除標記的資料保留政策規則,請使用相同指令,但指定 --remove-rule=TAG_NAMESPACED_NAME 而非 --set-rule。舉例來說,如要移除組織的標記規則,請按照下列步驟操作:
gcloud beta compute snapshot-recycle-bin-policy update \ --organization=ORGANIZATION_ID \ --remove-rule=TAG_NAMESPACED_NAME
REST
如要為代碼設定資料保留政策規則,請建構對 snapshotRecycleBinPolicy 方法的 PATCH 要求。
在要求主體中,加入 rules 物件,指定標記名稱和保留期限 (以天為單位)。
- 如要為專案中的標記設定或更新資料保留政策規則,請按照下列步驟操作:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy/
{
"rules": {
"TAG_NAMESPACED_NAME_1": {
"standardSnapshots": {
"retentionDurationDays": RETENTION_PERIOD_DAYS
}
}
}
}
將下列項目替換為對應的值:
PROJECT_ID:專案 ID。TAG_NAMESPACED_NAME:標記的命名空間限定名稱,包括其值。例如:my-project-id/env/prod或my-organization-id/env/build。RETENTION_PERIOD_DAYS:保留期限 (以天為單位),從0變更為7。如要為具有這個標記的快照停用回收桶,請指定0。如要為機構中的標記設定或更新保留政策規則,請如上例傳送
PATCH要求,但使用下列網址。
PATCH https://compute.googleapis.com/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy/
將 ORGANIZATION_ID 替換為機構 ID。要求主體如上一個範例所述。
- 如要移除標記的資料保留政策規則,請按照上述範例建構
PATCH要求,但為標記規則指定null。舉例來說,如要移除專案中以標記為準的規則,請按照下列步驟操作:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
{
"rules": {
"TAG_NAMESPACED_NAME_1": null
}
}
查看專案或組織的資源回收筒保留政策
如要判斷專案或機構是否設有回收桶的自訂規則、查看任何以標記為準的規則,或檢查回收桶是否已停用,請查看專案或機構回收桶保留政策中的規則。
如要查看專案或機構的資源回收筒保留政策中的規則,請使用 gcloud CLI 或 REST。
gcloud CLI
如要查看專案或機構的資源回收筒保留政策 (包括以標記為準的規則),請使用 gcloud beta compute snapshot-recycle-bin-policy describe 指令:
如要查看組織的回收桶資料保留政策,請按照下列步驟操作:
gcloud beta compute snapshot-recycle-bin-policy describe \ --organization=ORGANIZATION_ID
將
ORGANIZATION_ID替換為組織 ID。如要查看專案的回收桶資料保留政策,請按照下列步驟操作:
gcloud beta compute snapshot-recycle-bin-policy describe \ --project=PROJECT_ID
將
PROJECT_ID替換為專案 ID。
輸出內容會是規則物件清單,大致如下。輸出內容包含三天系統預設規則。
rules:
default:
standardSnapshots:
retentionDurationDays: '2'
database-project/Testing-tag-key/build:
standardSnapshots:
retentionDurationDays: '0'
database-project/Testing-tag-key/critical:
standardSnapshots:
retentionDurationDays: '5'
systemRules:
default:
standardSnapshots:
retentionDurationDays: '3'
每項規則的 retentionDurationDays 欄位會以天為單位,指出規則的保留期限。在本範例中,專案 database-project 有三項規則:
- 所有含有
Testing-tag-key/critical標記的快照都適用五天規則。 - 立即刪除含有
Testing-tag-key/build標記的所有快照。 - 專案中所有其他快照的預設保留期限為兩天。
REST
如要查看專案或組織的所有資料保留政策規則 (包括標記規則),請建構 GET 要求,並傳送至 snapshotRecycleBinPolicy.get 方法。
如要查看機構的保留政策,請按照下列步驟操作:
GET https://compute.googleapis.com/compute/beta/organizations/ORGANIZATION_ID/global/snapshotRecycleBinPolicy
將
ORGANIZATION_ID替換為組織 ID。如要查看專案的保留政策,請按照下列步驟操作:
GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/snapshotRecycleBinPolicy
將
PROJECT_ID替換為專案 ID。
回覆內容大致如下。輸出內容會包含系統預設的三天規則。
{
"rules": {
"default": {
"standardSnapshots": {
"retentionDurationDays": "2"
}
},
"database-project/Testing-tag-key/build": {
"standardSnapshots": {
"retentionDurationDays": "0"
}
},
"database-project/Testing-tag-key/critical": {
"standardSnapshots": {
"retentionDurationDays": "5"
}
},
"systemRules": {
"default": {
"standardSnapshots": {
"retentionDurationDays": "3"
}
}
}
}
}
每項規則的 retentionDurationDays 欄位會指出規則的保留期限 (以天為單位)。在本範例中,專案 database-project 有三項規則:
- 為所有標記為
Testing-tag-key/critical的快照設定五天規則。 - 立即刪除含有
Testing-tag-key/build標記的所有快照。 - 專案中所有其他快照的預設保留期限為兩天。
如果保留期限為零,Compute Engine 會在刪除快照後立即永久清除。否則,保留期限會指出 Compute Engine 將快照保留在資源回收筒的時間長度,之後就會永久刪除。
查看代碼的回收桶保留期限
如要查看標記的保留政策,請擷取定義標記的專案或組織保留政策。
查看特定快照的回收桶保留期限
如要判斷標準快照刪除後是否會保留在資源回收筒,以及保留多久,請查看保留期限。如果保留期限為零,快照會在刪除後立即永久清除。否則,保留期限代表快照刪除後,會在回收桶保留多久。
您可以使用Google Cloud 控制台、gcloud CLI 或 REST,查看特定快照的保留期限。
Google Cloud 控制台
- 前往 Google Cloud 控制台的「Snapshots」(快照) 頁面。
在「快照」分頁中,查看專案中的快照清單。
在「Name」(名稱) 欄中,按一下標準快照的名稱。系統會顯示所選快照的「快照詳細資料」頁面。
「回收桶保留期限」屬性會顯示快照的回收桶保留期限。
gcloud CLI
如要查看特定快照的保留期限,請使用 gcloud beta compute snapshots get-effective-recycle-bin-rule 指令。
gcloud beta compute snapshots get-effective-recycle-bin-rule \ SNAPSHOT_NAME \ --project=PROJECT_ID
將下列項目替換為對應的值:
PROJECT_ID:: 含有快照的專案 ID。SNAPSHOT_NAME:快照名稱。
輸出結果會與下列內容相似:
retentionDurationDays: '5'
retentionDurationDays 欄位會指出快照回收桶的保留期限 (以天為單位)。
REST
如要查看特定快照的保留期限,請建構 GET 要求,並傳送至 getEffectiveRecycleBinRule 方法。
GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/getEffectiveRecycleBinRule
將下列項目替換為對應的值:
PROJECT_ID:: 含有快照的專案 ID。SNAPSHOT_NAME:快照名稱。
回應大致如下:
{
"retentionDurationDays": "5"
}
retentionDurationDays 欄位會指出快照在回收桶的保留期限 (以天為單位)。
如果保留期限為零,Compute Engine 會在刪除快照後立即永久清除。否則,保留期限會指出 Compute Engine 將快照保留在資源回收筒的時間長度,之後就會永久刪除。
如要判斷快照適用保留政策中的哪些規則,請比較快照的標記與專案和組織的保留政策中的標記和預設規則。
如要變更標準快照的保留期限,請選擇下列任一選項:
- 為其中一個快照標記建立代碼式規則
- 如果已有適當的標記規則,請按照「將標記新增至資源」一文中的操作說明,將該標記新增至快照。
- 變更專案或機構的預設資源回收筒保留規則,但請注意,這項規則會套用至專案或機構中的所有其他標準快照。
後續步驟
- 從資源回收筒復原快照
- 如要管理標準快照的標記,請參閱「為資源新增標記」