本頁面說明如何從 Cloud Storage 的值區刪除物件。如要瞭解物件刪除方法,請參閱「關於物件刪除」。
必要的角色
如要取得刪除物件所需的權限,請要求管理員在包含要刪除物件的 bucket 中,授予您下列 IAM 角色:
-
使用 Google Cloud CLI 或 REST API 刪除物件:
Storage Object User (
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」(值區詳細資料) 頁面,並選取「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
XML API
使用
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」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
前往該物件 (可能位於資料夾中)。
找出要刪除的每個物件,然後勾選對應的核取方塊。
選取資料夾的核取方塊,即可刪除該資料夾內的所有物件。
按一下「刪除」,然後在隨即顯示的對話方塊中按一下「刪除」。
如果一次刪除大量物件,可以點選 Google Cloud 控制台中的「通知」圖示,追蹤刪除進度。Google Cloud 控制台可大量刪除最多數百萬個物件,且會在背景執行作業。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
Google Cloud CLI
如要刪除具有相同前置字串的一組物件 (例如名稱模仿資料夾結構的物件),請搭配使用 gcloud storage rm 旗標和 --recursive 旗標:
gcloud storage rm --recursive gs://BUCKET_NAME/PREFIX
其中:
BUCKET_NAME是值區名稱。例如: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 和 Cloud Storage 的多雲端環境中,維持一致性。
以下範例說明如何使用 Boto3 程式庫初始化用戶端,以便與 Cloud Storage 互動:
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 個物件,請完成下列步驟:
建立 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,網址編碼為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 要求,有助於減少網路負擔。
後續步驟
- 如果您不小心刪除物件,請參閱這篇文章,瞭解如何還原虛刪除的物件。
- 如果您使用物件版本管理,請注意,刪除物件可能會使物件成為非現行版本,而非永久刪除。瞭解如何管理或永久刪除非最新版本。
- 設定物件生命週期管理,自動刪除日後的物件。
- 如不再需要值區,請刪除值區。