「要求者付費」功能可讓您共用 Cloud Storage bucket 中的資料,同時要求存取資料的使用者支付相關費用。如果您想向使用者提供大量資料,但不想支付資料存取費用,則可使用「要求者付費」功能。
如要瞭解如何在 bucket 啟用或停用「要求者付費」功能,請參閱「使用要求者付費功能」。
「要求者付費」功能總覽
每當使用者存取 Cloud Storage 資源 (例如 bucket 或物件) 時,系統會針對提出及執行要求收取費用。這類費用包括:
一般來說,系統會向資源的專案擁有者收取這些費用;不過,如果要求者在要求中提供計費專案,系統就會改向要求者的專案收費。在 bucket 啟用「要求者付費」功能後,您可以要求要求者在要求中加入計費專案,以便向要求者的專案收費。
未包含在內的費用
資料儲存費用 (包括提早刪除費用) 一律由 bucket 所在的專案支付,即使啟用「要求者付費」功能也一樣。
限制
下列限制適用於要求者付費:
- 當您從 Cloud SQL 執行匯入和匯出作業時,不能使用啟用要求者付費的值區。
- 您無法使用已啟用「要求者付費」功能的 bucket 匯出 Pub/Sub 資料。
使用及存取需求
如要為 bucket 啟用「要求者付費」功能,請啟用 bucket 的中繼資料旗標。啟用後,只有下列使用者可以存取值區或其內容:
要求者在要求中加入計費專案。要求中使用的專案必須記錄良好,且使用者必須在專案中具備包含
serviceusage.services.use權限的角色。「服務使用情形消費者」角色包含必要權限。要求者未提供計費專案,但具備 bucket 所在專案的
resourcemanager.projects.createBillingAssignment權限。帳單專案經理角色包含必要權限。與這些要求相關的存取費用會計入含有值區的專案帳單。
對值區的所有其他要求都會失敗,並顯示 400 UserProjectMissing 錯誤。
除了這些需求外,要求者還必須具備足夠的權限以執行所要求的動作。舉例來說,如果使用者在要求中提供有效的計費專案,但沒有明確權限 (例如該值區或包含該值區的專案具備 storage.objects.create 權限),就無法將物件上傳至值區。
停用「要求者付費」功能時,您必須在要求中加入計費專案,或具備 resourcemanager.projects.createBillingAssignment 權限。
來源計費作業
使用來源值區和目標值區的作業 (例如複製或重新寫入),會向含有來源值區的專案收取費用。在大部分情況下,例如使用 JSON 和 XML API 直接呼叫,如果來源值區已啟用要求者付費功能,您只需要納入計費專案即可。
在某些情況下 (例如 gcloud storage cp 含有 --no-clobber 旗標),如果來源值區或目的地值區 (或兩者) 啟用了「要求者付費」功能,您就必須加入計費專案。這是因為這類作業在執行動作時,會同時呼叫來源和目的地 bucket。
多要求作業
對於需要多個要求才能完成的作業,在要求中使用計費專案會產生下列行為:
如果是支援續傳的上傳作業,只有第一個要求需要包含計費專案,且該專案會套用至整個上傳作業。系統會忽略後續要求中指定的計費專案。
如果是使用 JSON API 重新寫入和 XML API 多部分上傳,每個要求都可以使用不同的計費專案,而且先前要求中指定的計費專案不適用於後續要求。
帳單
在要求中納入計費專案而產生的相關費用,不會單獨列在帳單中。舉例來說,假設您從「要求者付費」值區下載多個項目,並使用專案 my-project 做為要求的計費專案。如果 my-project 也包含您執行下載作業的 bucket,帳單只會顯示合併下載作業的總費用。不會分開顯示您自有值區的下載及要求者付費值區的下載。
如要區分自有 Cloud Storage 資源產生的費用,以及要求中包含計費專案產生的費用,請建立不含 Cloud Storage 資源的專案:這個專案會專門用來向其他專案中的資源 (例如「要求者付費」bucket) 提出要求。