本页面介绍如何将 Cloud Storage 对象组合为单个对象。组合请求可接受 1 到 32 个对象,并创建一个新的复合对象。复合对象按照请求中指定的顺序将各源对象连接起来。
在组合对象时,请注意以下事项:
- 源对象不受组合过程的影响。如果您希望它们暂时存在,则顺利完成组合后您必须删除它们。
- 由于其他存储类别会产生提前删除费用,因此您应始终对临时对象使用 Standard Storage。
所需权限
控制台
Google Cloud 控制台不支持执行对象组合。请改用 Google Cloud CLI。
命令行
为使用命令行实用程序完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需权限的列表,请参阅 gcloud storage
命令的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
客户端库
如需使用 Cloud Storage 客户端库完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
除非另有说明,否则客户端库请求通过 JSON API 发出,并且需要 JSON 方法的 IAM 权限中列出的权限。如需查看使用客户端库发出请求时调用了哪些 JSON API 方法,请记录原始请求。
如需查看相关 IAM 角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
REST API
JSON API
如需使用 JSON API 完成本指南,您必须拥有适当的 IAM 权限。如果要访问的存储桶在不是由您创建的项目中,则可能需要项目所有者为您提供包含必要权限的角色。
如需查看特定操作所需的权限列表,请参阅 JSON 方法的 IAM 权限。
如需查看相关角色的列表,请参阅 Cloud Storage 角色。或者,您也可以创建一个自定义角色,并为其提供具体受限的权限。
创建复合对象
控制台
Google Cloud 控制台不支持执行对象组合。请改用 Google Cloud CLI。
命令行
使用 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
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 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 OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/COMPOSITE_OBJECT_NAME/compose"
其中:
JSON_FILE_NAME
是您在上一步中创建的文件的名称。OAUTH2_TOKEN
是您在本指南前述步骤中生成的访问令牌。BUCKET_NAME
是包含源对象的存储分区的名称。COMPOSITE_OBJECT_NAME
是您赋予对象组合成果的名称。
如果成功,系统会响应生成的复合对象的对象资源。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 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 OAUTH2_TOKEN" \ -H "Content-Type: COMPOSITE_OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
其中:
XML_FILE_NAME
是您在上一步中创建的文件的名称。OAUTH2_TOKEN
是您在本指南前述步骤中生成的访问令牌。COMPOSITE_OBJECT_CONTENT_TYPE
是生成的复合对象的 Content-Type。BUCKET_NAME
是包含源对象的存储分区的名称。COMPOSITE_OBJECT_NAME
是您赋予对象组合成果的名称。
如果成功,则返回空的响应正文。