Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

PUT 对象

贡献者

您可以使用 S3 PUT 对象请求将对象添加到存储分段中。

解决冲突

冲突的客户端请求(例如,两个客户端写入同一密钥)将以 " 最新成功 " 为基础进行解决。" 最新赢单 " 评估的时间取决于 StorageGRID 系统何时完成给定请求,而不是 S3 客户端何时开始操作。

对象大小

单个 PUT 对象操作的最大 _recommended_size 为 5 GiB ( 5 , 368 , 709 , 120 字节)。如果对象大于 5 GiB ,请改用多部分上传。

重要说明 在 StorageGRID 11.6 中,单个 PUT 对象操作的最大 _supported _ 大小为 5 TiB ( 5 , 497 , 554 , 138 , 880 字节)。但是,如果您尝试上传超过 5 GiB 的对象,则会触发 * S3 PUT Object Size Too large* 警报。

用户元数据大小

Amazon S3 将每个 PUT 请求标头中用户定义的元数据的大小限制为 2 KB 。StorageGRID 将用户元数据限制为 24 KiB 。用户定义的元数据的大小是通过采用 UTF-8 编码的每个键和值的字节数之和来衡量的。

用户元数据中的 UTF-8 字符

如果某个请求在用户定义的元数据的密钥名称或值中包含(未转义) UTF-8 值,则会未定义 StorageGRID 行为。

StorageGRID 不会解析或解释用户定义的元数据的密钥名称或值中包含的转义 UTF-8 字符。转义的 UTF-8 字符被视为 ASCII 字符:

  • 如果用户定义的元数据包含转义的 UTF-8 字符,则 PUT , PUT 对象副本, GET 和 HEAD 请求将成功。

  • 如果对密钥名称或值的解释值包含不可打印的字符,则 StorageGRID 不会返回 x-AMZ-MISSING-meta 标头。

对象标记限制

您可以在上传新对象时为其添加标记,也可以将其添加到现有对象中。StorageGRID 和 Amazon S3 对每个对象最多支持 10 个标记。与对象关联的标记必须具有唯一的标记密钥。一个标记密钥的长度最多可以是 128 个 Unicode 字符,而标记值的长度最多可以是 256 个 Unicode 字符。密钥和值区分大小写。

对象所有权

在 StorageGRID 中,所有对象均归存储分段所有者帐户所有,包括由非所有者帐户或匿名用户创建的对象。

支持的请求标头

支持以下请求标头:

  • 缓存控制

  • 内容处置

  • 内容编码

    如果为 内容编码StorageGRID 指定 AWS-chunked ,则不会验证以下项:

    • StorageGRID 不会根据区块数据验证 chunk-signature

    • StorageGRID 不会验证为对象提供的 x-AMZ-解码 内容长度 值。

  • 内容语言

  • 内容长度

  • 内容 -MD5

  • 内容类型

  • 到期

  • 传输编码

    如果同时使用 AWS-chunked 有效负载签名,则支持分块传输编码。

  • x-AMZ-meta- ,后跟一个名称 - 值对,其中包含用户定义的元数据。

    为用户定义的元数据指定名称 - 值对时,请使用以下通用格式:

    x-amz-meta-name: value

    如果要使用 * 用户定义的创建时间 * 选项作为 ILM 规则的参考时间,则必须使用 creation-time 作为创建对象时记录的元数据的名称。例如:

    x-amz-meta-creation-time: 1443399726

    自 1970 年 1 月 1 日以来, creation-time 的值将以秒为单位进行评估。

    备注 ILM 规则不能同时使用 * 用户定义的创建时间 * 作为参考时间,也不能使用平衡或严格选项来执行载入行为。创建 ILM 规则时返回错误。
  • X-AMZ-Tagging

  • S3 对象锁定请求标头

    • x-AMZ-object-lock-mode

    • x-AMZ-object-lock-retain-until date

    • x-AMZ-object-lock-legal-hold

      如果在不使用这些标题的情况下发出请求,则存储分段默认保留设置用于计算对象版本 retain-until 日期。

  • SSA 请求标头:

    • x-AMZ-server-side encryption

    • x-AMZ-server-side encrypt-customer-key-md5

    • x-AMZ-server-side encrypt-customer-key

    • x-AMZ-server-side encrypt-customer-encryption

请求标头不受支持

不支持以下请求标头:

  • 不支持 x-AMZ-ACL 请求标头。

  • 不支持 x-AMZ-website-redirect-location 请求标头并返回 XNotImplemented

存储类选项

支持 x-AMZ-storage-class 请求标头。为 x-AMZ-storage-class 提交的值会影响 StorageGRID 在载入期间保护对象数据的方式,而不会影响 StorageGRID 系统中存储对象的永久性副本的数量(由 ILM 决定)。

如果与已载入对象匹配的 ILM 规则对载入行为使用 strict 选项,则 x-AMZ-storage-class 标头将不起作用。

以下值可用于 x-AMZ-storage-class

  • standard (默认)

    • * 双提交 * :如果 ILM 规则为载入行为指定了双提交选项,则在载入对象后,系统会立即创建该对象的第二个副本并将其分发到其他存储节点(双提交)。评估 ILM 后, StorageGRID 将确定这些初始临时副本是否满足规则中的放置说明。否则,可能需要在不同位置创建新的对象副本,并且可能需要删除初始中间副本。

    • * 已平衡 * :如果 ILM 规则指定 Balified 选项,而 StorageGRID 无法立即创建规则中指定的所有副本,则 StorageGRID 会在不同的存储节点上创建两个临时副本。

      如果 StorageGRID 可以立即创建 ILM 规则(同步放置)中指定的所有对象副本,则 x-AMZ-storage-class 标头将不起作用。

  • re介绍冗余

    • * 双提交 * :如果 ILM 规则为载入行为指定了双提交选项,则 StorageGRID 会在载入对象时创建一个临时副本(单个提交)。

    • * 已平衡 * :如果 ILM 规则指定 Balified 选项,则只有在系统无法立即创建规则中指定的所有副本时, StorageGRID 才会创建一个临时副本。如果 StorageGRID 可以执行同步放置,则此标头不起作用。re 与对象匹配的 ILM 规则创建一个复制副本时,最好使用 " 已复制 " 选项。在这种情况下,使用 recreated_redundancy 可以避免在每次载入操作中不必要地创建和删除额外的对象副本。

    在其他情况下,不建议使用 reincluster_redundancy 选项。re介绍冗余 增加了载入期间对象数据丢失的风险。例如,如果最初将单个副本存储在发生故障的存储节点上,而此存储节点未能进行 ILM 评估,则可能会丢失数据。

  • 注意 * :在任意时间段内只复制一个副本会使数据面临永久丢失的风险。如果某个对象只存在一个复制副本,则在存储节点出现故障或出现严重错误时,该对象将丢失。在升级等维护过程中,您还会暂时失去对对象的访问权限。

指定 recreated_redundancy 仅会影响首次载入对象时创建的副本数。它不会影响在活动 ILM 策略评估对象时创建的对象副本数,也不会导致数据在 StorageGRID 系统中以较低的冗余级别存储。

  • 注 * :如果要在启用了 S3 对象锁定的情况下将对象载入存储分段,则会忽略 re区冗余 选项。如果要将对象载入旧的合规存储分段,则 re区冗余 选项将返回错误。StorageGRID 将始终执行双提交载入,以确保满足合规性要求。

服务器端加密的请求标头

您可以使用以下请求标头通过服务器端加密对对象进行加密。SSE 和 SSI-C 选项是互斥的。

  • * SSE* :如果要使用 StorageGRID 管理的唯一密钥对对象进行加密,请使用以下标题。

    • x-AMZ-server-side encryption

  • * SSI-C* :如果要使用您提供和管理的唯一密钥对对象进行加密,请使用所有这三个标头。

    • x-AMZ-server-side encrypt-customer-all :指定 AES256

    • x-AMZ-server-side encrypt-customer-key :为新对象指定加密密钥。

    • x-AMZ-server-side encrypt-customer-key-md5 :指定新对象加密密钥的 MD5 摘要。

  • 注意: * 您提供的加密密钥永远不会存储。如果丢失加密密钥,则会丢失相应的对象。在使用客户提供的密钥保护对象数据之前,请查看 "`使用服务器端加密 " 中的注意事项。`

  • 注: * 如果对象使用 SSE 或 SSI-C 进行加密,则会忽略任何分段级别或网格级别的加密设置。

版本控制

如果为存储分段启用了版本控制,则会自动为所存储的对象版本生成唯一的 veversionId 。此 veversionId 也会在响应中使用 x-AMZ-version-id 响应标头返回。

如果版本控制已暂停,则存储的对象版本为 null veversionId ,如果已存在空版本,则该版本将被覆盖。