本页面介绍如何将 Cloud Storage 对象组合为单个对象。组合请求可接受 1 到 32 个对象,并创建一个新的复合对象。复合对象按照请求中指定的顺序将各源对象连接起来。
在组合对象时,请注意以下事项:
- 源对象不受组合过程的影响。如果您希望它们暂时存在,则顺利完成组合后您必须删除它们。
- 由于其他存储类别会产生提前删除费用,因此您应始终对临时对象使用 Standard Storage。
所需的角色
如需获得组合对象所需的权限,请让您的管理员为您授予存储桶的 Storage Object User (roles/storage.objectUser
) IAM 角色。此预定义角色可提供组合对象所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.create
storage.objects.delete
- 仅当您想要为您组合的对象指定与存储桶中已存在的对象相同的名称时,才需要此权限。
storage.objects.get
storage.objects.list
- 仅当您想要使用通配符以相同前缀组合对象而无需在 Google Cloud CLI 命令中单独列出每个对象时,才需要此权限。
如果您想要为所组合的对象设置保留配置,则还需要 storage.objects.setRetention
权限。如需获得此权限,请让您的管理员为您授予 Storage Object Admin (roles/storage.objectAdmin
) 角色,而不是 Storage Object User (roles/storage.objectUser
) 角色。
您也可以使用其他预定义角色或自定义角色来获得这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
创建复合对象
命令行
使用 gcloud storage objects compose
命令:
gcloud storage objects compose gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 gs://BUCKET_NAME/COMPOSITE_OBJECT_NAME
其中:
BUCKET_NAME
是包含源对象的存储桶的名称。SOURCE_OBJECT_1
和SOURCE_OBJECT_2
是对象组合过程中使用的源对象的名称。COMPOSITE_OBJECT_NAME
是您赋予对象组合成果的名称。
客户端库
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 JSON 文件:
{ "sourceObjects": [ { "name": "SOURCE_OBJECT_1" }, { "name": "SOURCE_OBJECT_2" } ], "destination": { "contentType": "COMPOSITE_OBJECT_CONTENT_TYPE" } }
其中:
SOURCE_OBJECT_1
和SOURCE_OBJECT_2
是对象组合过程中使用的源对象的名称。COMPOSITE_OBJECT_CONTENT_TYPE
是生成的复合对象的 Content-Type。
使用
cURL
,通过POST
Object 请求调用 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/COMPOSITE_OBJECT_NAME/compose"
其中:
JSON_FILE_NAME
是您在上一步中创建的文件的名称。BUCKET_NAME
是包含源对象的存储分区的名称。COMPOSITE_OBJECT_NAME
是您赋予对象组合成果的名称。
如果成功,系统会响应生成的复合对象的对象资源。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
Authorization
标头中。创建一个包含以下信息的 XML 文件:
<ComposeRequest> <Component> <Name>SOURCE_OBJECT_1</Name> </Component> <Component> <Name>SOURCE_OBJECT_2</Name> </Component> </ComposeRequest>
其中:
SOURCE_OBJECT_1
和SOURCE_OBJECT_2
是对象组合过程中使用的源对象的名称。
使用
cURL
,通过PUT
Object 请求和compose
查询字符串参数调用 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: COMPOSITE_OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
其中:
XML_FILE_NAME
是您在上一步中创建的文件的名称。COMPOSITE_OBJECT_CONTENT_TYPE
是生成的复合对象的 Content-Type。BUCKET_NAME
是包含源对象的存储分区的名称。COMPOSITE_OBJECT_NAME
是您赋予对象组合成果的名称。
如果成功,则返回空的响应正文。