本頁說明如何使用長時間執行的作業,這些作業是透過 Cloud Storage 中的方法呼叫啟動。如要進一步瞭解從特定方法呼叫傳回的長時間執行的作業語意,請參閱特定功能的說明文件。
取得必要角色
如要取得在 Cloud Storage 中管理長時間執行的作業所需的權限,請要求管理員授予您 bucket 或專案的 Storage 管理員 (roles/storage.admin) 角色或 Storage 舊版 bucket 擁有者 (roles/storage.legacyBucketOwner) 角色,以便執行基礎作業。
這些預先定義的角色包含下列權限,可用於管理 Cloud Storage 中長時間執行的作業:
storage.bucketOperations.cancelstorage.bucketOperations.getstorage.bucketOperations.liststorage.buckets.list(只有在使用 Google Cloud 控制台時才需要這項權限)
如要瞭解如何授予 bucket 角色,請參閱「在 bucket 上設定及管理 IAM 政策」。如要瞭解如何授予專案角色,請參閱「管理存取權」。
取得長時間執行的作業的詳細資料
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下與長時間執行的作業相關聯的 bucket 名稱。
按一下「作業」分頁標籤。
指令列
如要取得長時間執行的作業詳細資料或檢查狀態,請使用 gcloud storage operations describe 指令:
gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
更改項目:
BUCKET_NAME,其中包含長時間執行的作業的 bucket 名稱。例如:my-bucket。OPERATION_ID:長時間執行作業的 ID,會在您呼叫的方法回應中傳回。舉例來說,呼叫gcloud storage restore會傳回下列回應,而長時間執行的作業 ID 為BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過operations.get要求呼叫 JSON API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations/OPERATION_ID"
更改項目:
BUCKET_NAME替換為與長時間執行的作業相關聯的值區名稱。OPERATION_ID,並提供長時間執行的作業 ID,這個 ID 會在您呼叫的方法的回應中傳回。舉例來說,呼叫gcloud storage restore會傳回下列回應,且長時間執行的作業 ID 為BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
如果要求成功,系統會傳回 operations 資源:
{
"kind": "storage#operation",
"name": "projects/_/buckets/bucket/operations/operation_id",
"metadata": {
"@type": OperationMetadataType*,
metadata OperationMetadata*
},
"done": boolean,
"response": {
"@type": ResponseResourceType*,
response ResponseResource*
}
}列出 bucket 中長時間執行的作業
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下 bucket 名稱。
按一下「作業」分頁標籤。
指令列
如要列出 bucket 中長時間執行的作業,請使用 gcloud storage operations list 指令:
gcloud storage operations list gs://BUCKET_NAME
更改項目:
BUCKET_NAME,其中包含長時間執行的作業的 bucket 名稱。例如:my-bucket。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並發出operations.get要求:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations"
更改項目:
- 將
BUCKET_NAME替換為與要列出的長時間執行的作業相關聯的值區名稱。
- 將
如果要求成功,您會收到類似以下的回應:
{
"kind": "storage#operations",
"nextPageToken": string,
"operations": [
operations Resource
]
}取消長時間執行的作業
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下與要取消的長時間執行的作業相關聯的 bucket 名稱。
按一下「作業」分頁標籤。
在長時間執行的作業所在資料列中,依序點選 「More options」(更多選項) 和「Cancel」(取消)。
指令列
如要取消長時間執行的作業,請使用 gcloud storage operations cancel 指令:
gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
更改項目:
BUCKET_NAME,其中包含長時間執行的作業的 bucket 名稱。例如:my-bucket。OPERATION_ID,並提供長時間執行作業的 ID,該 ID 會在您呼叫的方法回應中傳回。舉例來說,下列回應是從呼叫gcloud storage restore傳回,而長時間執行的作業 ID 為BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL透過operations.post要求呼叫 JSON API:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/operations/OPERATION_ID/cancel"
更改項目:
將
BUCKET_NAME替換為與要取消的長時間執行的作業相關聯的 bucket 名稱。OPERATION_ID:長時間執行的作業 ID,會在您呼叫的方法回應中傳回。舉例來說,呼叫gcloud storage restore會傳回下列回應,且長時間執行的作業 ID 為BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP:Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP
中繼資料
長時間執行的作業都有相關聯的中繼資料。下列中繼資料可識別長時間執行的作業的屬性:
建立時間:長時間執行的作業建立時間。
結束時間:長時間執行的作業完成時間。
更新時間:上次修改長時間執行的作業的時間。
類型:啟動長時間執行作業的 API 呼叫。
Requested cancellation:指出使用者是否已要求取消長時間執行的作業。
進度百分比:長時間執行的作業的預估進度,以百分比表示。如果值為
-1,表示進度不明。
在 Google Cloud 控制台中,進度百分比和要求的取消中繼資料會合併顯示在「Status」(狀態) 欄位中。
錯誤處理
長時間執行的作業是由非同步 API 啟動,需要與同步 API 不同的錯誤處理做法。與同步 API 不同,即使長時間執行的作業最終失敗,非同步 API 呼叫的回應仍可能表示成功。請剖析回應主體中的長時間執行的作業中繼資料,判斷 API 呼叫是否成功,而非依賴回應標頭中傳回的狀態碼。
舉例來說,如果您提出大量還原要求,即使作業期間發生錯誤,系統仍會傳回成功的 HTTP 狀態碼 (200 OK)。如要確認大量還原作業是否成功,請取得長時間執行的作業狀態。
請注意,長時間執行的作業 API (Get、List、Cancel) 為同步,且會傳回正常錯誤。