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

对 bucket 的操作

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

每个网格最多可以有 100,000 个桶。

为了支持 5,000 个存储桶,网格中的每个存储节点必须至少具有 64 GB 的 RAM。

存储桶名称限制遵循 AWS 美国标准区域限制,但您应该进一步将它们限制为 DNS 命名约定,以支持 S3 虚拟托管样式请求。

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

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

您可以检查是否针对各个存储桶启用或禁用了上次访问时间的更新。看"获取 Bucket 上次访问时间"

下表描述了StorageGRID如何实现 S3 REST API 存储桶操作。要执行任何这些操作,必须为帐户提供必要的访问凭据。

操作 实施

创建桶

创建一个新的存储桶。通过创建存储桶,您就成为存储桶的所有者。

  • Bucket 名称必须遵循以下规则:

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

    • 必须符合 DNS 标准。

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

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

    • 不能看起来像文本格式的 IP 地址。

    • 不应在虚拟托管样式请求中使用句点。句点将导致服务器通配符证书验证出现问题。

  • 默认情况下,存储桶在 `us-east-1`区域;但是,您可以使用 `LocationConstraint`请求主体中的请求元素来指定不同的区域。使用时 `LocationConstraint`元素,您必须指定使用网格管理器或网格管理 API 定义的区域的确切名称。如果您不知道应该使用的区域名称,请联系您的系统管理员。

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

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

    创建存储桶时必须启用 S3 对象锁。创建存储桶后,您无法添加或禁用 S3 对象锁定。 S3 对象锁定需要存储桶版本控制,该功能在您创建存储桶时自动启用。

删除桶

删除存储桶。

删除BucketCors

删除存储桶的 CORS 配置。

删除桶加密

从存储桶中删除默认加密。现有的加密对象仍保持加密状态,但添加到存储桶的任何新对象都不会加密。

DeleteBucket生命周期

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

删除桶策略

删除附加到存储桶的策略。

删除桶复制

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

删除桶标记

使用 `tagging`子资源从存储桶中删除所有标签。

警告:如果为此存储桶设置了非默认的 ILM 策略标签,则会出现 `NTAP-SG-ILM-BUCKET-TAG`已分配值的 bucket 标签。如果存在 `NTAP-SG-ILM-BUCKET-TAG`桶标签。相反,发出仅包含 `NTAP-SG-ILM-BUCKET-TAG`标签及其分配的值,以从存储桶中删除所有其他标签。请勿修改或删除 `NTAP-SG-ILM-BUCKET-TAG`桶标签。

获取BucketAcl

返回肯定响应以及存储桶拥有者的 ID、DisplayName 和 Permission,表明拥有者对该存储桶具有完全访问权限。

获取BucketCors

返回 `cors`存储桶的配置。

获取桶加密

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

获取BucketLifecycleConfiguration

(以前称为 GET Bucket 生命周期)

返回存储桶的生命周期配置。看"创建 S3 生命周期配置"

获取存储桶位置

返回使用 LocationConstraint`CreateBucket 请求中的元素。如果 bucket 的区域是 `us-east-1,则该区域返回一个空字符串。

获取存储桶通知配置

(以前称为 GET Bucket 通知)

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

获取BucketPolicy

返回附加到存储桶的策略。

获取Bucket复制

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

获取桶标记

使用 `tagging`子资源返回存储桶的所有标签。

警告:如果为此存储桶设置了非默认的 ILM 策略标签,则会出现 `NTAP-SG-ILM-BUCKET-TAG`已分配值的 bucket 标签。请勿修改或删除此标签。

获取Bucket版本

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

  • blank:从未启用版本控制(存储桶为“未版本控制”)

  • 已启用:版本控制已启用

  • 已暂停:版本控制之前已启用,现已暂停

获取对象锁配置

如果已配置,则返回存储桶默认保留模式和默认保留期。

头桶

确定存储桶是否存在以及您是否有权访问它。

此操作返回:

  • x-ntap-sg-bucket-id:Bucket 的 UUID,格式为 UUID。

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

ListObjects 和 ListObjectsV2

(以前称为 GET Bucket)

返回存储桶中的部分或全部(最多 1,000 个)对象。对象的存储类可以有两个值,即使对象是通过 `REDUCED_REDUNDANCY`存储类别选项:

  • STANDARD,表示该对象存储在由Storage Node组成的存储池中。

  • GLACIER,表示该对象已移动到云存储池指定的外部存储桶中。

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

列出对象版本

(以前称为 GET Bucket Object 版本)

拥有存储桶的读取权限,使用此操作 `versions`子资源列出了存储桶中所有版本的对象的元数据。

PutBucketCors

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

PutBucket加密

设置现有存储桶的默认加密状态。启用存储桶级加密后,添加到存储桶的任何新对象都将被加密。StorageGRID 支持使用StorageGRID管理的密钥进行服务器端加密。指定服务器端加密配置规则时,设置 SSEAlgorithm`参数 `AES256,并且不要使用 `KMSMasterKeyID`范围。

如果对象上传请求已经指定了加密(即,如果请求包含 `x-amz-server-side-encryption-*`请求标头)。

PutBucket生命周期配置

(以前称为 PUT Bucket 生命周期)

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

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

  • NoncurrentVersionExpiration(NewerNoncurrentVersions、NoncurrentDays)

  • 过滤器(前缀、标签)

  • 状态

  • ID

StorageGRID不支持以下操作:

  • 中止未完成的分段上传

  • 过渡

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

注意:存储桶生命周期配置可与启用了 S3 对象锁的存储桶一起使用,但存储桶生命周期配置不支持旧版兼容存储桶。

PutBucketNotification配置

(以前称为 PUT Bucket 通知)

使用请求正文中包含的通知配置 XML 为存储桶配置通知。您应该了解以下实施细节:

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

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

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

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

    • s3:ReducedRedundancyLostObject

    • s3:ObjectRestore:Completed

  • 从StorageGRID发送的事件通知使用标准 JSON 格式,但它们不包含某些键,而对其他键使用特定值,如以下列表所示:

    • 事件源

      sgws:s3

    • aws区域

      不包括

    • x-amz-id-2

      不包括

    • 阿恩

      urn:sgws:s3:::bucket_name

PutBucketPolicy

设置附加到存储桶的策略。看"使用存储桶和组访问策略"

PutBucket复制

配置"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.

  • 您不需要指定 `Role`在配置 XML 中。 StorageGRID不使用此值,如果提交将被忽略。

  • 如果您从配置 XML 中省略存储类, StorageGRID将使用 `STANDARD`默认存储类别。

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

    • 如果您在复制之前删除对象或存储桶,则该对象/存储桶不会被复制,并且您不会收到通知。

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

PutBucketTagging

使用 `tagging`子资源来添加或更新存储桶的一组标签。添加存储桶标签时,请注意以下限制:

  • StorageGRID和 Amazon S3 都支持每个存储桶最多 50 个标签。

  • 与存储桶关联的标签必须具有唯一的标签键。标签键的长度最多可达 128 个 Unicode 字符。

  • 标签值的长度最多可达 256 个 Unicode 字符。

  • 键和值区分大小写。

警告:如果为此存储桶设置了非默认的 ILM 策略标签,则会出现 `NTAP-SG-ILM-BUCKET-TAG`已分配值的 bucket 标签。确保 `NTAP-SG-ILM-BUCKET-TAG`所有 PutBucketTagging 请求中都包含存储桶标签和分配的值。请勿修改或删除此标签。

注意:此操作将覆盖存储桶已有的任何当前标签。如果集合中省略了任何现有标签,则将从存储桶中删除这些标签。

PutBucket版本控制

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

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

  • 暂停:禁用存储桶中对象的版本控制。添加到存储桶的所有对象都会收到版本 ID null

PutObjectLock配置

配置或删除存储桶默认保留模式和默认保留期。

如果修改了默认保留期,则现有对象版本的保留截止日期保持不变,并且不会使用新的默认保留期重新计算。