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

StorageGRID 中的 S3 存储桶操作和实施详细信息

贡献者 netapp-pcarriga netapp-lhalbert netapp-perveilerk netapp-jsnyder

StorageGRID 系统为每个 S3 租户帐户最多支持 20,000 个存储桶。

每个网格最多可以包含100、000个分段。

如果多个租户每个都有多达 5,000 个存储桶,则网格中的每个存储节点必须至少有 64 GB 的 RAM。

存储桶名称限制遵循 AWS US Standard 区域限制,但应进一步将其限制为 DNS 命名约定,以支持 S3 虚拟托管风格的请求。

有关详细信息,请参见以下内容:

ListObjects(获取 Bucket)和 ListObjectVersions(获取 Bucket 对象版本)操作支持StorageGRID"一致性值"

您可以检查是否为单个存储区启用或禁用了对上次访问时间的更新。请参阅 "获取存储分段上次访问时间"

下表介绍了 StorageGRID 如何实施 S3 REST API 存储分段操作。要执行其中任何操作,必须为帐户提供必要的访问凭据。

操作 实施

CreateBucket

创建新存储分段。创建存储分段后,您就会成为存储分段所有者。

注意:不支持 S3 目录存储桶。

  • 存储分段名称必须符合以下规则:

    • 每个 StorageGRID 系统必须是唯一的(而不仅仅是租户帐户中的唯一)。

    • 必须符合 DNS 要求。

    • 必须包含至少3个且不超过63个字符。

    • 可以是一个或多个标签的序列,并使用一个句点分隔相邻标签。每个标签必须以小写字母或数字开头和结尾,并且只能使用小写字母,数字和连字符。

    • 不能与文本格式的 IP 地址类似。

    • 不应在虚拟托管模式请求中使用句点。句点会在验证服务器通配符证书时出现发生原因 问题。

  • 默认情况下,分段是在区域中创建的 us-east-1;但是,您可以在请求正文中使用 LocationConstraint`请求元素来指定其他区域。使用元素时 `LocationConstraint、必须指定已使用网格管理器或网格管理API定义的区域的确切名称。如果您不知道应使用的区域名称、请联系您的系统管理员。

    注意:如果您的 CreateBucket 请求使用的区域尚未在 StorageGRID 中定义,则会发生错误。

  • 您可以包含 `x-amz-bucket-object-lock-enabled`请求标头以创建启用了 S3 Object Lock 的存储桶。请参阅"使用S3 REST API配置S3对象锁定"

    S3 Object Lock 需要存储桶版本控制,在创建启用了 S3 Object Lock 的存储桶时会自动启用。

    您可以在创建存储桶时或稍后启用 S3 Object Lock。

DeleteBucket

删除存储分段。

DeleteBucketCors

删除存储分段的CORS配置。

DeleteBucketEncryption

从存储分段中删除默认加密。现有加密对象将保持加密状态、但添加到存储分段的任何新对象不会加密。

DeleteBucketLifecycle

从存储桶中删除生命周期配置。请参阅"创建 S3 生命周期配置"

DeleteBucketPolicy

删除附加到存储分段的策略。

DeleteBucketReplication

删除附加到存储分段的复制配置。

DeleteBucketTbaging

使用 `tagging`子资源从存储分段中删除所有标记。

注意:如果为此存储桶设置了非默认 ILM 策略标记,则将存在一个分配了值的 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记。如果有 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记,请勿发出 DeleteBucketTagging 请求。相反,仅使用 `NTAP-SG-ILM-BUCKET-TAG`标记及其分配的值发出 PutBucketTagging 请求,以从存储桶中删除所有其他标记。请勿修改或删除 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记。

GetBucketAcl

返回肯定响应以及存储分段所有者的ID、DisplayName和权限、指示所有者对存储分段具有完全访问权限。

GetBucketCors

返回 `cors`存储分段的配置。

GetBucketEncryption

返回存储分段的默认加密配置。

GetBucketLifecycleConfiguration

(以前称为GET分段生命周期)

返回存储区的生命周期配置。请参阅 "创建 S3 生命周期配置"

GetBucketLocation

返回使用 LocationConstraint 元素在 CreateBucket 请求中设置的区域。如果存储桶的区域为 us-east-1(默认),则会为 LocationConstraint 返回空值。

GetBucketNotizationConfiguration

(以前称为GET分段通知)

返回附加到存储分段的通知配置。

GetBucketPolicy

返回附加到存储分段的策略。

GetBucketReplication

返回附加到存储分段的复制配置。

GetBucketTaging

使用 `tagging`子资源返回存储分段的所有标记。

注意:如果为此存储桶设置了非默认 ILM 策略标记,则将存在一个 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记,并为其分配了值。请勿修改或删除此标签。

GetBucketVersioning

此实现使用 `versioning`子资源返回存储分段的版本控制状态。

  • blank:从未启用版本控制(分段已"取消版本控制")

  • Enabled :已启用版本控制

  • suspended :先前已启用版本控制并已暂停

GetObjectLockConfiguration

返回存储分段默认保留模式和默认保留期限(如果已配置)。

HeadBucket

确定存储分段是否存在、以及您是否有权访问该存储分段。

此操作将返回:

  • x-ntap-sg-bucket-id:UUID格式的存储分段的UUID。

  • x-ntap-sg-trace-id:关联请求的唯一跟踪ID。

ListObjects和ListObjectsV2

(以前称为GET分段)

返回分段中的部分或全部对象(最多1、000个)。对象的存储类可以具有两个值之一、即使对象是使用存储类选项获取的也是 `REDUCED_REDUNDANCY`如此:

  • STANDARD,表示对象存储在由存储节点组成的存储池中。

  • GLACIER,表示对象已移至云存储池指定的外部存储分段。

如果存储分段包含大量具有相同前缀的已删除密钥、则响应可能包含一些 `CommonPrefixes`不包含密钥的密钥。

对于 HeadObject 和 ListObject 请求, StorageGRID返回具有不同精度的 LastModified 时间戳,而 AWS 返回具有相同精度的时间戳,如以下示例所示:

  • StorageGRID HeadObject:“LastModified”:“2024-09-26T16:43:24 + 00:00”

  • StorageGRID ListObject:“LastModified”:“2024-09-26T16:43:24.931000 + 00:00”

  • AWS HeadObject:“LastModified”:“2023-10-17T00:19:54 + 00:00”

  • AWS ListObject:“LastModified”:“2023-10-17T00:19:54 + 00:00”

ListObjectVersies

(以前称为Get BucketObject Version)

如果对存储分段具有读取访问权限、则对子资源使用此操作 `versions`可列出存储分段中所有版本对象的元数据。

PutBucketCors

设置存储分段的CORS配置、以便存储分段可以处理跨源站请求。跨源资源共享( CORS )是一种安全机制,允许一个域中的客户端 Web 应用程序访问不同域中的资源。例如、假设您使用名为的S3存储分段 images`来存储图形。通过设置存储分段的CORS配置 `images,您可以允许该存储分段中的图像显示在网站上 http://www.example.com

PutBucketEncryption

设置现有存储分段的默认加密状态。启用存储分段级别加密后,添加到存储分段中的任何新对象都会进行加密。 StorageGRID 支持使用 StorageGRID 管理的密钥进行服务器端加密。指定服务器端加密配置规则时,请将参数设置 SSEAlgorithm`为 `AES256,而不要使用 `KMSMasterKeyID`参数。

如果对象上传请求已指定加密(即、如果请求包含请求标头)、则会忽略存储分段默认加密配置 x-amz-server-side-encryption-*

PutBucketLifecycleConfiguration

(以前称为"放置分段生命周期")

为存储分段创建新的生命周期配置或替换现有生命周期配置。StorageGRID 在一个生命周期配置中最多支持 1 , 000 条生命周期规则。每个规则可以包含以下 XML 元素:

  • 到期日期(天数、日期、ExpireObjectDeleteMarker)

  • 非当前版本到期(新非当前版本、非当前日期)

  • 筛选器(前缀,标记)

  • 状态

  • ID

StorageGRID 不支持以下操作:

  • AbortIncompleteMultipartUpload

  • 过渡

请参阅"创建 S3 生命周期配置"。要了解存储桶生命周期中的到期操作如何与 ILM 放置说明交互,请参阅"ILM 如何在对象的整个生命周期内运行"

  • 注 * :存储分段生命周期配置可用于启用了 S3 对象锁定的存储分段,但传统合规存储分段不支持存储分段生命周期配置。

PutBucketNotizationConfiguration

(以前称为Put Bucket"通知)

使用请求正文中包含的通知配置XML配置分段的通知。您应了解以下实施详细信息:

  • StorageGRID支持 Amazon Simple Notification Service (Amazon SNS) 主题、Kafka 主题或 webhook 端点作为目的地。不支持简单队列服务 (SQS) 或 AWS Lambda 端点。

  • 必须将通知目标指定为 StorageGRID 端点的 URN 。可以使用租户管理器或租户管理 API 创建端点。

    要成功配置通知,端点必须存在。如果端点不存在, 400 Bad Request`则返回错误代码 `InvalidArgument

  • 您不能为以下事件类型配置通知。这些事件类型 * 不 * 受支持。

    • s3:ReducedRedundancyLostObject

    • s3:ObjectRestore:Completed

  • 从StorageGRID 发送的事件通知使用标准JSON格式、不同之处在于它们不包含某些密钥、而对其他密钥使用特定值、如以下列表所示:

    • * 事件源 *

      sgws:s3

    • * awsRegion*

      不包括

    • * 。 x-AMZ-id-2*

      不包括

    • * arn*

      urn:sgws:s3:::bucket_name

PutBucketPolicy

设置附加到存储桶的策略。请参阅 "使用存储分段和组访问策略"

PutBucketReplication

使用请求正文中提供的复制配置"StorageGRID CloudMirror复制"XML配置存储分段。对于 CloudMirror 复制,您应了解以下实施详细信息:

  • StorageGRID 仅支持复制配置的 V1。这意味着 StorageGRID 不支持对规则使用 `Filter`元素,并遵循 V1 约定删除对象版本。有关详细信息,请参阅 "《Amazon Simple Storage Service用户指南:复制配置》"

  • 分段复制可以在分版本或未分版本的分段上配置。

  • 您可以在复制配置 XML 的每个规则中指定不同的目标存储分段。一个源存储分段可以复制到多个目标存储分段。

  • 目标存储桶必须指定为租户管理器或租户管理 API 中指定的 StorageGRID 终结点的 URN。请参阅 "配置 CloudMirror 复制"

    要成功进行复制配置,必须存在此端点。如果端点不存在,则请求将作为失败 400 Bad Request。错误消息指出: Unable to save the replication policy. The specified endpoint URN does not exist: URN.

  • 您无需在配置XML中指定 Role。StorageGRID 不使用此值,如果提交,则会忽略此值。

  • 如果在配置XML中省略该存储类、则默认情况下、StorageGRID将使用该 `STANDARD`存储类。

  • 如果从源存储分段中删除对象或删除源存储分段本身,则跨区域复制行为如下:

    • 如果在复制对象或存储分段之前将其删除、则不会复制该对象或存储分段、也不会通知您。

    • 如果您在复制对象或存储分段后将其删除,则 StorageGRID 会对跨区域复制的 V1 遵循标准 Amazon S3 删除行为。

PutBucketTaging

使用 `tagging`子资源为存储分段添加或更新一组标记。添加存储分段标记时,请注意以下限制:

  • StorageGRID 和 Amazon S3 为每个存储分段最多支持 50 个标签。

  • 与存储分段关联的标记必须具有唯一的标记密钥。一个标记密钥的长度最多可包含 128 个 Unicode 字符。

  • 标记值的长度最多可以为 256 个 Unicode 字符。

  • 密钥和值区分大小写。

注意:如果为此存储桶设置了非默认 ILM 策略标记,则将存在一个 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记,并为其分配了值。确保在所有 PutBucketTagging 请求中包含带有分配值的 `NTAP-SG-ILM-BUCKET-TAG`存储桶标记。请勿修改或删除此标记。

注意:此操作将覆盖存储分段已有的任何当前标记。如果在集合中省略了任何现有标记、则会删除存储分段中的这些标记。

PutBucketVersioning

使用 `versioning`子资源设置现有存储分段的版本控制状态。您可以使用以下值之一设置版本控制状态:

  • Enabled :为存储分段中的对象启用版本控制。添加到存储分段中的所有对象都会收到唯一的版本 ID 。

  • suspended :为存储分段中的对象禁用版本控制。添加到存储分段的所有对象都会收到版本ID null

PutObjectLockConfiguration

  • 配置或删除存储分段默认保留模式和默认保留期限。

  • 如果网格管理员已授予权限,则在现有存储桶上启用 S3 对象锁定。

如果修改了默认保留期限,现有对象版本的 retain-until-date 将保持不变,并且不会使用新的默认保留期限重新计算。

有关详细信息,请参见 "使用S3 REST API配置S3对象锁定"