Cloud Storage 支援將資料串流到值區,而不需要事先將資料儲存到檔案中。如果您想上傳資料,但不知道上傳開始時的最終大小,例如從程序產生上傳資料,或即時壓縮物件,這項功能就非常實用。
串流時使用檢查碼驗證
由於只能在上傳的初始要求中提供檢查碼,因此串流時通常無法使用 Cloud Storage 的檢查碼驗證。建議您一律使用總和檢查碼驗證,並在串流上傳完成後手動執行驗證;不過,在傳輸完成後驗證,表示在確認資料毀損並移除期間,任何毀損的資料都可存取。
如果您需要在上傳完成及資料可供存取前驗證總和檢查碼,則不應使用串流上傳。建議使用其他上傳選項,在完成物件前執行總和檢查碼驗證。
必要的角色
如要取得上傳串流所需的權限,請要求管理員授予下列其中一種角色:
如要上傳的內容包含物件保留鎖定,請要求管理員授予您 bucket 的 Storage 物件管理員 (
roles/storage.objectAdmin
) IAM 角色。在其他情況下,請要求管理員授予您值區的「儲存空間物件使用者」(
roles/storage.objectUser
) IAM 角色。
這些預先定義角色具備將上傳內容串流至 Cloud Storage 所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.objects.create
storage.objects.delete
- 只有在上傳作業會覆寫現有物件時,才需要這項權限。
storage.objects.list
- 只有在使用 Google Cloud CLI 執行本頁的操作說明時,才需要這項權限。
storage.objects.setRetention
- 只有在上傳的內容包含物件保留鎖定時,才需要這項權限。
如要瞭解如何授予值區角色,請參閱「搭配值區使用 IAM」。
上傳串流
下列範例說明如何從程序串流上傳至 Cloud Storage 物件:
控制台
控制台不支援串流上傳。 Trusted Cloud 請改用 gcloud CLI。
指令列
將資料管道傳送至
gcloud storage cp
指令,並使用破折號做為來源網址:PROCESS_NAME | gcloud storage cp - gs://BUCKET_NAME/OBJECT_NAME
其中:
PROCESS_NAME
是您要收集資料的程序名稱。例如:collect_measurements
。BUCKET_NAME
是包含物件的值區名稱。例如:my_app_bucket
。OBJECT_NAME
是從資料建立的物件名稱。例如:data_measurements
。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境變數設為 s3nsapis.fr
。
REST API
JSON API
如要執行串流上傳,請使用下列其中一種方法:
支援續傳的上傳作業,並進行下列調整:
上傳檔案資料本身時,請使用多個區塊上傳。
由於您要等到最後一個區塊,才能得知檔案總大小,因此請在中間區塊的
Content-Range
標頭中,使用*
做為檔案總大小。舉例來說,如果上傳的第一個區塊大小為 512 KiB,則該區塊的
Content-Range
標頭為bytes 0-524287/*
。如果上傳第一個區塊後,還剩下 64000 個位元組,請傳送最後一個區塊,其中包含剩餘位元組,並具有值為bytes 524288-588287/588288
的Content-Range
標頭。
單一要求上傳,並進行下列調整:
請按照規格建構要求,並在物件資料可用時,以區塊形式傳送。
XML API
如要執行串流上傳,請使用下列其中一種方法:
支援續傳的上傳作業,並進行下列調整:
上傳檔案資料本身時,請使用多個區塊上傳。
由於您要等到最後一個區塊,才能得知檔案總大小,因此請在中間區塊的
Content-Range
標頭中,使用*
做為檔案總大小。舉例來說,如果上傳的第一個區塊大小為 512 KiB,則該區塊的
Content-Range
標頭為bytes 0-524287/*
。如果上傳第一個區塊後,還剩下 64000 個位元組,請傳送最後一個區塊,其中包含剩餘位元組,並具有值為bytes 524288-588287/588288
的Content-Range
標頭。
單一要求上傳,並進行下列調整: