本頁面將說明與 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 會使用以下預設值:
public, max-age=3600,前提是物件並非使用客戶自行管理的加密金鑰加密,或儲存在虛擬私有雲服務範圍內。no-cache, no-store, max-age=0:如果物件是使用客戶自行管理的加密金鑰加密。private, max-age=0,如果物件儲存在虛擬私有雲 service perimeter 內。no-cache, no-store, max-age=0, must-revalidate,前提是物件儲存在虛擬私有雲服務安全防護範圍內且使用客戶管理的加密金鑰加密。
如果允許快取,即使上傳了新版物件,下載作業仍可能繼續接收舊版物件。這是因為這類早期版本在快取中仍會保持「最新」狀態,時間長度由 max-age 決定。此外,由於可在網際網路上的各種位置快取物件,因此沒有方法可強制快取過的物件在全球過期。也就是說,如果您撤銷物件的公開存取權,系統仍可從快取提供該物件,具體取決於上次存取時間和 Cache-Control 設定。舉例來說,如果物件是以 public, max-age=3600 的 Cache-Control 提供,則可在快取中保留一小時。如要避免提供公開可讀物件的快取版本,請在物件上設定 Cache-Control: no-store。
轉換資料
Cache-Control 中繼資料也可讓您提供儲存的物件,而不必對資料套用任何轉換,例如為不相容的用戶端移除 gzip 內容編碼。如要提供原狀的物件,請設定 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-stream 或 application/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。
物件結構定義
物件脈絡資料是使用者定義的鍵/值組合。您可以將這些標記附加至物件,以便管理及探索資料。修改物件內容會更新物件的中繼資料版本編號和 ETag。詳情請參閱「物件背景資訊」。
物件訴訟保留
使用中繼資料標記設定物件保留機制,防止物件遭到刪除或取代。詳情請參閱「物件保留頁面」。
保留設定
物件的保留設定會定義日期和時間,在該日期和時間之前,物件無法刪除或替換。如要透過單一工作更新數百萬或數十億個物件的保留設定,請使用儲存空間批次作業。詳情請參閱「物件保留鎖定」。
自訂中繼資料
自訂中繼資料是指您同時定義鍵和值的中繼資料。如要建立自訂中繼資料,請同時指定鍵和值。建立自訂中繼資料 key:value 組合後,您可以刪除鍵或變更值。如要透過單一工作更新數百萬或數十億個物件的自訂中繼資料,請使用 儲存空間批次作業。
自訂中繼資料有大小限制。
「查看及編輯中繼資料」頁面包含設定自訂中繼資料的相關資訊。
x-goog-meta- 前置字串
XML API 會使用要求標頭設定及擷取物件中繼資料,而 JSON API 則允許在支援續傳的上傳作業的最終要求中,使用要求標頭設定自訂中繼資料。為清楚區分自訂中繼資料標頭與標準要求標頭,這兩個 API 都會為這類自訂中繼資料標頭加上 x-goog-meta- 前置字元。
不能編輯的中繼資料
有些中繼資料無法直接編輯,這種中繼資料會在建立或重寫物件時設定。建立或重寫物件時,您可以設定部分中繼資料,例如物件的儲存空間級別或客戶自行管理的加密金鑰。系統會自動新增其他中繼資料,且只能查看,例如物件的生成編號或建立時間。
世代和中繼資料版本編號
每個 Cloud Storage 物件的中繼資料都包含數值 generation 屬性和數值 metageneration 屬性,可專門用來識別物件:
| 屬性 | 說明 |
|---|---|
generation或version ID |
識別物件版本,無論值區是否使用物件版本控管,每個物件都有這個屬性。在 Amazon S3 相容 API (例如多物件刪除 XML API) 的情境中,這個 ID 稱為 version ID。
|
metageneration |
識別中繼資料版本,並在每次更新特定 generation 的中繼資料時增加。
|
在下列情況中,會使用 generation 和 metageneration 屬性:
使用要求中的先決條件:如果不符合先決條件,要求就會失敗。這樣一來,要求就不會套用至非預期的物件版本,例如擷取錯誤的物件資料,或修改物件中繼資料的錯誤狀態。
列出、存取、還原及刪除非現行物件版本: 非現行物件版本特別適用於使用或先前使用物件版本管理的 bucket。
檢查碼機制
核對和是根據相關聯物件的資料計算而得的中繼資料。核對和可用於驗證物件資料是否損毀。Cloud Storage 物件有數個總和檢查碼中繼資料欄位。
CRC32C
所有 Cloud Storage 物件都有 CRC32C 雜湊。用於計算 CRC32C 的程式庫包括:
- C++ 適用的 Google CRC32C
- Go 的 hash/crc32
- Java 適用的 GoogleAPIs Guava
- Python 適用的 google-crc32c
- Ruby 中的 digest-crc
Base64 編碼的 CRC32C 採用大端序位元組順序。
MD5
如果 Cloud Storage 物件符合下列條件,就會有 MD5 雜湊:
- 這個物件不是複合物件。
- 物件並非使用 XML API 分塊上傳功能上傳。
如果要求中含有 Content-MD5 標頭,Cloud Storage 會比較提供的 MD5 雜湊與上傳物件的計算雜湊,驗證物件資料的完整性。如果雜湊值不相符,系統會拒絕要求。
ETag
所有 Cloud Storage 物件都有 ETag。不過,如果透過 XML API 要求同一個物件,其 ETag 值可能會與透過 JSON API 要求時不同。在大多數情況下,使用者不應對 ETag 中使用的值做出任何假設,除非基礎資料或中繼資料發生變更,則根據規格,該值也會隨之變更。
如果符合下列所有條件,物件的 ETag 標頭會傳回物件的 MD5 值:
- 要求是透過 XML API 提出
- 物件僅使用 Google Cloud-powered encryption keys 進行伺服器端加密
- 物件不是複合物件,且不是使用 XML API 多部分上傳功能上傳
時間戳記
Cloud Storage 物件的中繼資料可能包含下列時間戳記。欄位名稱會因您用來處理物件的工具或 SDK 語言而異。如需 SDK,請參閱相關用戶端程式庫說明文件。
指令列
| 欄位名稱 | 說明 |
|---|---|
creation_time |
物件的建立時間。這個時間戳記不會變更。 |
update_time |
物件中繼資料的最近修改時間。這個值最初會設為物件的建立時間,之後只要物件的任何中繼資料變更,系統就會更新這個值。這包括要求者所做的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者所做的變更 (例如根據物件生命週期設定變更儲存空間級別)。 |
noncurrent_time |
物件的刪除時間。只有在物件版本不再是使用中版本,但仍以非現行版本的形式保留在 bucket 中時,才會傳回這個值。 |
soft_delete_time |
物件虛刪除的時間。僅適用於設有虛刪除政策的 bucket 中的物件。 |
hard_delete_time |
虛刪除物件永久刪除且無法再還原的時間。這個值是虛刪除時間和值區保留政策中設定的保留時長總和。僅適用於設有虛刪除政策的 bucket 中的物件。請注意,永久刪除時間的值一經設定即永久有效,不會因保留時間長度變更而改變。 |
retention_settings.retainUntilTime |
物件最早可刪除或替換的時間。這個值與物件所在值區設定的任何資料保留政策無關。最大值為 3,155,760,000 秒 (100 年),從目前日期和時間算起。 |
retention_expiration |
可刪除物件的最早時間。這個值取決於為物件設定的保留設定,以及為包含物件的值區設定的保留政策。 |
storage_class_update_time |
上次變更物件儲存空間級別的時間。物件最初建立時,這個值會設為物件的建立時間。 |
finalize_time |
物件的完成時間。 |
contexts.KEY.createTime |
首次將這個物件內容索引鍵新增至物件的時間。 |
contexts.KEY.updateTime |
上次更新這個物件脈絡資料鍵的時間。 |
custom_time |
使用者指定的物件時間戳記。為物件設定自訂時間後,就無法移除或設為較早的日期時間。如要進一步瞭解如何使用自訂時間,請參閱「自訂時間中繼資料」。 |
API
JSON API
| 欄位名稱 | 說明 |
|---|---|
timeCreated |
物件的建立時間。這個時間戳記不會變更。 |
updated |
物件中繼資料的最近修改時間。這個值一開始會設為物件的建立時間,之後只要物件的中繼資料有任何變更,就會更新。這包括要求者所做的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者所做的變更 (例如根據物件生命週期設定變更儲存空間級別)。 |
timeDeleted |
物件的刪除時間。只有在這個物件版本不再是使用中版本,但仍以非現行版本的形式保留在 bucket 中時,才會傳回。 |
softDeleteTime |
物件虛刪除的時間。僅適用於設有虛刪除政策的 bucket 中的物件。 |
hardDeleteTime |
虛刪除物件永久刪除且無法再還原的時間。這個值是虛刪除時間和值區保留政策中設定的保留時長總和。僅適用於設有虛刪除政策的 bucket 中的物件。請注意,永久刪除時間的值一經設定即永久有效,不會因保留時間長度變更而改變。 |
retention.retainUntilTime |
物件最早可刪除或替換的時間。這個值與物件所在值區設定的任何資料保留政策無關。最大值為 3,155,760,000 秒 (100 年),從目前日期和時間算起。 |
retentionExpirationTime |
可刪除物件的最早時間。這個值取決於為物件設定的保留設定,以及為包含物件的值區設定的保留政策。 |
timeStorageClassUpdated |
上次變更物件儲存空間級別的時間。物件最初建立時,這個值會設為物件的建立時間。 |
timeFinalized |
物件的完成時間。 |
contexts.custom.KEY.createTime |
首次將這個物件內容索引鍵新增至物件的時間。 |
contexts.custom.KEY.updateTime |
上次更新這個物件脈絡資料鍵的時間。 |
customTime |
使用者指定的物件時間戳記。設定物件的自訂時間後,就無法移除,也無法設為較早的日期時間。如要進一步瞭解如何使用自訂時間,請參閱「自訂時間中繼資料」。 |
XML API
| 欄位名稱 | 說明 |
|---|---|
Created |
物件的建立時間。這個時間戳記不會變更。 |
LastModified |
物件中繼資料的最近修改時間。這個值最初會設為物件的建立時間,之後只要物件的任何中繼資料變更,系統就會更新這個值。包括要求者所做的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者所做的變更 (例如根據物件生命週期設定變更儲存空間類別)。 |
DeletedTime |
物件的刪除時間。只有在物件版本不再是使用中版本,但仍以非現行版本的形式保留在 bucket 中時,才會傳回這個值。 |
x-goog-object-lock-retain-until-date |
最早可刪除或取代物件的時間。這個值與物件所在值區設定的任何資料保留政策無關。最大值為目前日期和時間起算的 3,155,760,000 秒 (100 年)。 |
Finalized |
物件的最終時間。 |
x-goog-custom-time |
使用者指定的物件時間戳記。為物件設定自訂時間後,就無法移除或設為較早的日期時間。如要進一步瞭解如何使用自訂時間,請參閱「自訂時間中繼資料」。 |
RPC API
| 欄位名稱 | 說明 |
|---|---|
create_time |
物件的建立時間。這個時間戳記不會變更。 |
update_time |
物件中繼資料的最近修改時間。這個值最初會設為物件的建立時間,之後只要物件的任何中繼資料變更,系統就會更新這個值。這包括要求者所做的變更 (例如修改自訂中繼資料),以及 Cloud Storage 代表要求者所做的變更 (例如根據物件生命週期設定變更儲存空間級別)。 |
delete_time |
物件的刪除時間。只有在這個物件版本不再是使用中版本,但仍以非現行版本的形式保留在 bucket 中時,才會傳回。 |
soft_delete_time |
物件虛刪除的時間。僅適用於設有虛刪除政策的 bucket 中的物件。 |
hard_delete_time |
虛刪除物件永久刪除且無法再還原的時間。這個值是虛刪除時間和值區保留政策中設定的保留時長總和。僅適用於設有虛刪除政策的 bucket 中的物件。請注意,永久刪除時間的值一經設定即永久有效,不會因保留時間長度變更而改變。 |
retention.retain_until_time |
物件最早可刪除或替換的時間。這個值與物件所在值區設定的任何資料保留政策無關。最大值為 3,155,760,000 秒 (100 年),從目前日期和時間算起。 |
retention_expire_time |
可刪除物件的最早時間。這個值取決於為物件設定的保留設定,以及為包含物件的值區設定的保留政策。 |
update_storage_class_time |
上次變更物件儲存空間級別的時間。物件最初建立時,這個值會設為物件的建立時間。 |
finalize_time |
物件的完成時間。 |
contexts.custom.KEY.createTime |
首次將這個物件內容索引鍵新增至物件的時間。 |
contexts.custom.KEY.updateTime |
上次更新這個物件脈絡資料鍵的時間。 |
custom_time |
物件的使用者指定時間戳記。為物件設定自訂時間後,就無法移除或設為較早的日期時間。如要進一步瞭解如何使用自訂時間,請參閱「自訂時間中繼資料」。 |
後續步驟
- 查看及編輯物件中繼資料。
- 瞭解可用的儲存空間級別。
- 如要詳細瞭解 JSON API 中所有可用的物件中繼資料欄位,請參閱 JSON 物件參考說明文件。