物件中繼資料

管理

本頁討論與物件一起儲存在 Cloud Storage 中的常用中繼資料欄位。

簡介

儲存在 Cloud Storage 的物件具有相關聯的「中繼資料」。中繼資料可用來識別物件的屬性,還可以指定存取物件時應該如何處理物件。中繼資料以「鍵:值組合」的形式存在。舉例來說,物件的儲存空間級別由中繼資料項目「storageClass:STANDARD」表示。其中 storageClass 就是中繼資料的「鍵」,而所有的物件都會有這樣一個相關聯的鍵。STANDARD 則指定這個特定物件具有的「值」,這個值會隨物件的不同而異。

中繼資料的易變性也不盡相同;有些中繼資料可以隨時編輯,有些中繼資料只能在建立物件時設定,而有些中繼資料只能查看。例如,您隨時可以編輯 Cache-Control 中繼資料的值,但只能在建立或重寫物件時指派 storageClass 中繼資料,也不能直接編輯 generation 中繼資料的值,不過 generation 的值會在物件取代時改變。

可編輯的中繼資料

使用者可變更的物件中繼資料有兩種:

  • 固定鍵中繼資料:雖已設定鍵、但可指定值的中繼資料。

  • 自訂中繼資料:藉由同時指定鍵及與此鍵關聯的值而新增的中繼資料。

編輯中繼資料時,通常應避免使用非 ASCII 字元,因為這些字元不適用於 XML API 所使用的 HTTP 標頭。

固定鍵中繼資料

您可以編輯物件的下列中繼資料,但必須有對應的足夠權限

存取權控管中繼資料

Cloud Storage 使用身分與存取權管理 (IAM)存取控制清單 (ACL) 來控管物件的存取權。請透過這些連結,瞭解這些存取權控管方法及關聯的中繼資料。

快取控制

Cache-Control 中繼資料可指定從 Cloud Storage 提供資料方法的兩種思考方向:是否可快取資料,以及是否可轉換資料。

快取資料

Cache-Control 中繼資料可讓您控制快取功能是否允許快取您的物件,以及允許多久的時間,如此可用於滿足日後的要求。快取可以包含瀏覽器和網際網路快取,以及 Cloud Storage 內建快取

如果適用物件沒有 Cache-Control 中繼資料項目,Cloud Storage 會使用以下預設值:

如果您允許快取,下載內容可能會繼續接收物件的舊版本,即使較新版本已經上傳。這是因為較舊的版本會在快取中保持「新鮮」一段時間 (取決於 max-age)。此外,由於可在網際網路上的各種位置快取物件,因此沒有方法可強制快取過的物件在全球過期。也就是說,如果您撤銷物件的公開存取權,系統仍可從快取中提供該物件,具體取決於上次存取該物件的時間和 Cache-Control 設定。舉例來說,如果物件是以 public, max-age=3600Cache-Control 提供,則可在快取中保留一小時。如果您想要避免提供可公開讀取物件的快取版本,請在物件上設定 Cache-Control: no-store

如要進一步控管快取行為,您可以在值區前端設定 Cloud CDN

轉換資料

Cache-Control 中繼資料也可讓您在儲存物件時提供物件,而不套用任何轉換至資料,例如:針對不相容的用戶端移除 gzip content-encoding。如要提供原狀的物件,請設定 Cache-Control:no-transform

Content-Disposition

Content-Disposition 中繼資料指定轉換中資料的呈現資訊。設定 Content-Disposition 可讓您控制內容的呈現風格,例如決定是否應自動顯示附件,還是應該要求使用者執行某些動作來開啟該附件。如需 Content-Disposition 規格,請參閱 https://datatracker.ietf.org/doc/html/rfc6266

Content-Encoding

Content-Encoding 中繼資料可用來表示物件已經過壓縮,同時仍保有物件的基礎 Content-Type。例如,以 gzip 壓縮的文字檔,可在 Content-Type 中指出它是文字檔,以及在 Content-Encoding 中指出它是使用 gzip 壓縮的。您應確保檔案確實使用指定的 Content-Encoding 進行壓縮,再更新檔案,否則嘗試下載物件時可能會發生非預期的行為。詳情請參閱轉碼頁面

對於可壓縮的內容如文字等,使用 Content-Encoding: gzip 可節省網路和儲存費用,並可改善內容提供效能。但是對於本身已經壓縮的內容,如封存和許多媒體格式等,如將其他壓縮層級套用到這類內容並在 Content-Encoding 中繼資料中標示,通常不利於物件大小和效能,因此應該避免。

Content-Language

Content-Language 中繼資料表示物件主要用於哪些語言。請參閱 ISO 639-1 語言代碼,瞭解這類中繼資料的常見值。

Cloud Storage 支援的 Content-Language 值長度上限為 100 個字元。

Content-Type

最常設定的中繼資料是 Content-Type (也稱為媒體類型),可讓瀏覽器正確轉譯物件。所有物件都會在自己的 Content-Type 中繼資料指定值,但這個值無需與物件的基礎類型相符。例如,如果 Content-Type 不是由上傳者指定並且無法確定,則根據上傳物件的方式設為 application/octet-streamapplication/x-www-form-urlencoded。如需有效內容類型的清單,請參閱 IANA 媒體類型頁面。

自訂時間

Custom-Time 中繼資料是使用者指定的日期和時間,以 RFC 3339 格式 YYYY-MM-DD'T'HH:MM:SS.SS'Z'YYYY-MM-DD'T'HH:MM:SS'Z' 表示 (當毫秒數為零時)。這類中繼資料通常會在物件生命週期管理中設定,以便使用 DaysSinceCustomTime 條件。

Custom-Time 一旦套用至物件,就無法移除。此外,Custom-Time 的值不得減少。也就是說,您無法將 Custom-Time 設為比現有 Custom-Time 更早的日期/時間。不過,您可以透過重寫物件,有效移除或重設 Custom-Time

物件訴訟保留

使用中繼資料標記設定物件訴訟保留,避免物件遭到刪除或取代。詳情請參閱「物件訴訟保留」頁面。

保留設定

物件保留設定會定義物件無法刪除或取代的日期和時間。詳情請參閱「物件保留鎖定」。

自訂中繼資料

自訂中繼資料是指您同時定義鍵和值的中繼資料。如要建立自訂中繼資料,請指定值和鍵。建立自訂中繼資料 key:value 組合後,您可以刪除鍵或變更值。

自訂中繼資料須遵守大小限制,且會產生儲存空間費用

「查看及編輯中繼資料」頁面提供設定自訂中繼資料的相關資訊。

x-goog-meta- 前置字串

XML API 會使用要求標頭設定及擷取物件中繼資料,而 JSON API 則可讓您使用要求標頭,在可續行上傳的最終要求中設定自訂中繼資料。為清楚區分自訂中繼資料標頭和標準要求標頭,這兩個 API 會在自訂中繼資料標頭前面加上 x-goog-meta-

不能編輯的中繼資料

有些中繼資料無法直接編輯,這種中繼資料會在建立或重寫物件時設定。在建立或重寫物件的過程中,您可以設定這類的中繼資料,例如:物件的儲存空間級別客戶自行管理的加密金鑰。系統會自動新增其他中繼資料,且只能查看,例如物件的產生編號或建立時間。

產生版本和中繼資料版本編號

每個 Cloud Storage 物件都會在中繼資料中提供數值 generation 屬性和數值 metageneration 屬性,用於唯一識別物件:

屬性 說明
generation 用於識別物件版本,每個物件都會存在此屬性,無論值區是否使用物件版本管理功能。
  • 物件版本的 generation 值永遠不會變更。名稱相同的新物件可以取代現有物件,但新物件一律會指派不同的 generation
  • 我們無法保證後續版本的產生編號會增加,但每個新版本都會有專屬的產生編號。
  • 即使是同一個值區內的物件,不相關物件的產生編號也毫無關聯。
metageneration 指出中繼資料版本,並在特定 generation 的中繼資料更新時逐次增加。
  • 物件每次產生新的 generationmetageneration 都會從 1 開始。
  • 因此,如果沒有 generation 屬性,metageneration 屬性就毫無意義;兩者必須搭配使用。比較兩個物件版本的中繼資料生成世代並無意義。

generationmetageneration 屬性可用於下列情況:

檢查碼機制

總和檢查碼是從相關物件資料計算得出的中繼資料。總和檢查碼可用於驗證物件資料是否遭到損毀。Cloud Storage 物件有幾個總和檢查碼中繼資料欄位。

CRC32C

所有的 Cloud Storage 物件都有 CRC32C 雜湊碼。用來計算 CRC32C 的程式庫包括:

Base64 編碼的 CRC32C 採用大端序的位元組順序。

MD5

符合下列條件的 Cloud Storage 物件會使用 MD5 雜湊:

此雜湊只適用於完整物件,因此對於執行範圍 GET 所進行的局部下載作業,將無法使用此雜湊來執行完整性檢查。

ETag

所有 Cloud Storage 物件都有 ETag。不過,如果透過 XML API 要求相同的物件,與透過 JSON API 要求的物件相比,前者可能會有不同的 ETag 值。在大多數情況下,使用者不應對 ETag 中使用的值做出任何假設,但只要基礎資料或中繼資料變更,ETag 也會按照規格變更。

如果下列所有條件皆為真,物件的 ETag 標頭就會傳回物件的 MD5 值:

修改時間

每個 Cloud Storage 物件都會在中繼資料中加入 updated 屬性,用來指出物件中繼資料上次修改的時間。updated 時間一開始會設為物件的建立時間,然後在物件的任何中繼資料變更時變更。這包括要求者所做的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者所做的變更 (例如根據物件生命週期設定變更儲存空間級別)。

後續步驟