在 Cloud Storage 中使用长时间运行的操作

本页面介绍了如何在 Cloud Storage 中使用通过方法调用启动的长时间运行的操作。如需详细了解长时间运行的操作的语义(包括可以对长时间运行的操作执行哪些请求),请参阅特定于功能的文档。

如需了解有关如何管理长时间运行的操作的一般信息,请参阅 gcloud storage operations 文档

获取长时间运行的操作的详细信息

如需获取长时间运行的操作的详细信息或检查其状态,请使用 gcloud storage operations describe 命令:

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

您需要将其中的:

  • BUCKET_NAME 替换为包含长时间运行的操作的存储桶的名称。例如 my-bucket

  • OPERATION_ID 替换为长时间运行的操作的 ID,该 ID 会在您调用的方法的响应中返回。例如,调用 gcloud storage restore 会返回以下响应,长时间运行的操作 ID 为 BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

    Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

列出存储桶中长时间运行的操作

如需列出存储桶中长时间运行的操作,请使用 gcloud storage operations list 命令:

gcloud storage operations list gs://BUCKET_NAME

您需要将其中的:

  • BUCKET_NAME 替换为包含长时间运行的操作的存储桶的名称。例如 my-bucket

取消长时间运行的操作

如需取消长时间运行的操作,请使用 gcloud storage operations cancel 命令:

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

您需要将其中的:

  • BUCKET_NAME 替换为包含长时间运行的操作的存储桶的名称。例如 my-bucket

  • OPERATION_ID 替换为长时间运行的操作的 ID,该 ID 会在您调用的方法的响应中返回。例如,调用 gcloud storage restore 会返回以下响应,长时间运行的操作 ID 为 BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

    Created: projects/_/buckets/my-bucket/operations/BcazhBlHv2uZwnlh1UdamOfKbpVpb67drEwVoI2hlkE1e0eaXqw7fPBWP0802TJry4pInGC4h3wxtOi31RmpCC_lvnSocj_-jP

错误处理

长时间运行的操作通过异步 API 启动,需要的错误处理做法与同步 API 不同。与同步 API 不同,即使长时间运行的操作最终失败,对异步 API 调用的响应也可能指示成功。您应该解析响应正文中的长时间运行的操作元数据以确定 API 调用是否成功,而不是依赖于响应标头中返回的状态代码。

例如,如果您发出软删除批量恢复请求,则即使操作过程中发生错误,该请求也会返回成功的 HTTP 状态代码 (200 OK)。如需检查批量恢复操作是否成功,请获取长时间运行的操作的状态

请注意,长时间运行的操作 API(Get、List、Cancel)是同步的,会返回正常错误。