物件中繼資料

管理

本頁討論與物件一起儲存在 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 支援長度最多 100 個字元的 Content-Language 值。

Content-Type

最常設定的中繼資料是 Content-Type (也稱為媒體類型),可讓瀏覽器正確轉譯物件。所有物件都會在自己的 Content-Type 中繼資料指定值,但這個值無需與物件的基礎類型相符。舉例來說,如果上傳者未指定 Content-Type,且系統無法判斷,就會根據上傳物件的方式,將其設為 application/octet-streamapplication/x-www-form-urlencoded。如需有效內容類型的清單,請參閱「IANA Media Types」(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 識別物件版本,無論值區是否使用物件版本管理功能,每個物件都會有這個 ID。
  • 物件版本的 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。不過,與 JSON API 相比,從 XML API 要求相同物件時,該物件可能會有不同的 ETag 值。在大多數情況下,使用者不應採用 ETag 中使用的值,但只要基礎資料或中繼資料改變時,ETag 也會按照規格跟著改變。

如果符合下列所有條件,物件的 ETag 標頭會傳回物件的 MD5 值:

修改時間

每個 Cloud Storage 物件都有 updated 屬性,可指出物件中繼資料上次修改的時間,這是中繼資料的一部分。updated 時間最初會設為物件的建立時間,之後只要物件的任何中繼資料變更,這個時間就會隨之變更。包括要求者進行的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者進行的變更 (例如根據物件生命週期設定變更儲存空間級別)。

後續步驟