本頁面說明如何從 Cloud Storage 的值區刪除物件。有關物件刪除方法的概述,請參閱關於物件刪除。
必要的角色
如要取得刪除物件所需的權限,請要求管理員在包含要刪除物件的 bucket 中,授予您下列 IAM 角色:
-
使用 Google Cloud CLI 或 REST API 刪除物件:Storage 物件使用者 (
roles/storage.objectUser) -
使用 Google Cloud 控制台刪除物件:
「Storage 管理員」 (
roles/storage.admin) -
或者,要使用 Google Cloud 控制台刪除物件:檢視者 (
roles/viewer)和 Storage 物件使用者 (roles/storage.objectUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預定義角色包含刪除物件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
刪除物件需要以下權限:
-
刪除物件:
storage.objects.delete -
使用 Google Cloud 控制台列出物件,或在 Google Cloud CLI 中使用
--recursive旗標或萬用字元:storage.objects.list -
使用 Google Cloud 控制台列出 bucket:
storage.buckets.list
刪除單一對象
本節說明如何一次刪除一個物件。
若要刪除單一對象,請完成以下步驟:
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有要刪除物件的 bucket 名稱。
系統會開啟「Bucket details」(bucket 詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
前往該物件 (可能位於資料夾中)。
選取要刪除的物件旁的核取方塊。
按一下「刪除」,然後在隨即顯示的對話方塊中按一下「刪除」。
指令列
使用 Google Cloud CLI 指令 gcloud storage rm:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME
其中:
BUCKET_NAME是包含要刪除物件的值區名稱。例如:my-bucket。OBJECT_NAME是要刪除的物件名稱。例如:pets/dog.png。
如果成功,回應類似於以下範例:
Removing objects: Removing gs://example-bucket/file.txt... Completed 1/1
用戶端程式庫
C++
詳情請參閱「Cloud Storage C++ API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Python
詳情請參閱「Cloud Storage Python API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Ruby
詳情請參閱「Cloud Storage Ruby API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
curl來透過DELETE要求呼叫 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"
其中:
BUCKET_NAME是包含要刪除物件的值區名稱。例如:my-bucket。OBJECT_NAME是要刪除的物件名稱 (經過網址編碼)。例如pets/dog.png,網址編碼為pets%2Fdog.png。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
curl透過DELETE Object要求呼叫 XML API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
BUCKET_NAME是包含要刪除物件的值區名稱。例如:my-bucket。OBJECT_NAME是要刪除的物件名稱 (經過網址編碼)。例如pets/dog.png,網址編碼為pets%2Fdog.png。
大量刪除物件
本節說明如何透過在Google Cloud 主控台中選取物件、使用指令列工具刪除具有相同前置字元的物件,或在 API 或用戶端程式庫要求中指定物件清單,來大量刪除物件。
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有要刪除物件的 bucket 名稱。
系統會開啟「Bucket details」(bucket 詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
找到這些對象,它們可能位於某個資料夾中。
找出要刪除的每個物件,然後勾選對應的核取方塊。
選取資料夾的核取方塊,即可刪除該資料夾中的所有物件。
按一下「刪除」,然後在隨即顯示的對話方塊中按一下「刪除」。
如果一次刪除大量物件,可以點選 Google Cloud 控制台中的「通知」圖示,追蹤刪除進度。Google Cloud 控制台最多可大量刪除數百萬個物件,且會在背景執行這項作業。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
Google Cloud CLI
若要刪除具有相同前綴的物件群組,例如名稱相同的物件。模仿資料夾結構使用--recursive旗幟和gcloud storage rm:
gcloud storage rm --recursive gs://BUCKET_NAME/PREFIX
其中:
BUCKET_NAME是 bucket 的名稱。例如:my-bucket。PREFIX是要刪除之物件的共同前置字串。例如:pets/。
Amazon S3 CLI
如要使用 Amazon S3 CLI 刪除 Cloud Storage 中的多個物件,請使用 aws s3api delete-objects 指令。您需要將要求重新導向至 Cloud Storage 多個物件刪除 XML API,方法是將 --endpoint-url 旗標設為 storage.googleapis.com。如要瞭解 delete-objects API 的詳細參數定義和行為,請參閱 Amazon S3 CLI delete-objects 參考文件。
用戶端程式庫
Cloud Storage 透過 Amazon S3 相容介面支援多個物件刪除 XML API。如要使用與 Amazon S3 相容的用戶端程式庫大量刪除物件,請在用戶端設定中將端點網址設為 https://storage.googleapis.com,將要求指向 Google Cloud 端點。如果您要執行下列任一工作,這種做法會很有幫助:
- 利用現有的程式碼庫或已為 Amazon S3 建置的工具。
- 在包含 Amazon S3 和雲端儲存的多雲環境中保持一致性。
以下範例展示如何使用 Boto3 函式庫初始化用戶端以與雲端儲存互動:
import boto3
def main():
# Initialize the S3 client to point to the Google Cloud Storage endpoint
client = boto3.client(
service_name='s3',
endpoint_url='https://storage.googleapis.com',
aws_access_key_id='YOUR_ACCESS_ID',
aws_secret_access_key='YOUR_SECRET',
)
# Perform delete operations as defined in the library's documentation
# response = client.delete_objects(Bucket='BUCKET_NAME', Delete={'Objects': [...]})
如需特定方法簽章和參數定義,請參閱 delete_objects Boto3 說明文件。
XML API
如要使用 XML API,在單一要求中刪除最多 1,000 個物件,請完成下列步驟:
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立 XML 文件,指定要刪除的物件。
有關設定的完整列表,請參閱 XML API 參考文件中的 刪除多個物件。 XML 檔案中要加入的常見設定如下:
<Delete> <Object> <Key>OBJECT_NAME</Key> <VersionId>VERSION_ID</VersionId> </Object> ... <Quiet>QUIET_RESPONSE_BOOLEAN</Quiet> </Delete>其中:
OBJECT_NAME是物件的網址編碼名稱。例如,pets/dog.png,URL 編碼為pets%2Fdog.png。您最多可以在 XML 檔案中指定 1,000 個物件。VERSION_ID是物件的版本 ID。例如:11111。QUIET_RESPONSE_BOOLEAN控制 API 回應的詳細程度:- 設定為
False可顯示詳細資訊。無論物件是否成功刪除,回應都會包含每個物件的詳細資料。使用 XML API 進行多個物件的刪除作業時,並非不可分割。如果要求導致部分失敗,系統可能會成功刪除某些物件,但其他物件可能無法刪除,因此建議使用詳細回應來識別所有物件刪除作業。如果已啟用資料存取稽核記錄,您也可以查看稽核記錄瞭解失敗詳細資料。 - 如要讓回應靜音,請將這個屬性的值設為
True。回應主體不會包含成功刪除的物件相關資訊。
- 設定為
使用
curl將POSTbucket 要求傳送至 XML API,並附上?delete查詢參數和 XML 檔案:curl -X POST --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?delete"
其中:
XML_FILE_NAME是您建立的 XML 檔案名稱。BUCKET_NAME是包含要刪除物件的儲存桶的名稱。如果停用
Quiet模式,詳細回應可能如下所示:<DeleteResult> <Deleted> <Key>images/photo1.jpg</Key> <VersionId>11111</VersionId> </Deleted> <Deleted> <Key>documents/report.pdf</Key> <VersionId>22222</VersionId> </Deleted> <Error> <Code>AccessDenied</Code> <Key>private/financial_data.xlsx</Key> <Message>Access Denied. You don't have permission to delete this object.</Message> <VersionId>33333</VersionId> </Error> </DeleteResult>
如果啟用
Quiet模式,回應只會列出無法刪除的物件。如果所有物件都已成功刪除,系統會傳回空白的<DeleteResult/>標記。以下是一個發生錯誤時未採取任何行動的範例:<DeleteResult> <Error> <Code>AccessDenied</Code> <Key>private/financial_data.xlsx</Key> <Message>Access Denied. You don't have permission to delete this object.</Message> <VersionId>33333</VersionId> </Error> </DeleteResult>
刪除最多數十億個物件
如要透過單一物件刪除作業刪除數百萬或數十億個物件,請使用儲存空間批次作業。若要建立作業,請指定要刪除的物件,可以透過在資訊清單檔案中提供物件清單或使用物件前綴來實現。指定物件清單後,請建立批次作業工作來刪除物件。
使用物件生命週期規則自動刪除物件
如要讓系統在物件符合您指定的條件 (例如存在時間或儲存空間級別) 時自動刪除物件,請使用物件生命週期管理。例如,您可以設定生命週期規則來刪除超過 30 天的日誌。
使用 JSON API 批次刪除物件請求
如要使用 JSON API 刪除大量物件,並減少所需的 HTTP 連線數量,請使用 JSON API 批次要求。您最多可將 100 個 API 呼叫分組為單一 HTTP 要求,有助於減少網路負擔。
後續步驟
- 如果您不小心刪除物件,請參閱這篇文章,瞭解如何還原虛刪除的物件。
- 如果您使用物件版本管理,請注意,刪除物件可能會使物件非現行,而非永久刪除。學習如何管理或永久刪除非目前版本。
- 配置 物件生命週期管理 以自動執行未來的物件刪除操作。
- 如不再需要值區,請刪除值區。