PUT Bucket 元数据通知配置
PUT Bucket 元数据通知配置请求允许您为单个存储桶启用搜索集成服务。您在请求正文中提供的元数据通知配置 XML 指定将其元数据发送到目标搜索索引的对象。
您必须拥有存储桶的 s3:PutBucketMetadataNotification 权限,或者成为账户根,才能完成此操作。
要求
请求必须在请求正文中包含元数据通知配置。每个元数据通知配置都包含一个或多个规则。每条规则指定其适用的对象以及StorageGRID应发送对象元数据的目的地。
可以根据对象名称的前缀来过滤对象。例如,您可以发送带有前缀的对象元数据 `/images`到一个目的地,以及带有前缀的对象 `/videos`到另一个。
具有重叠前缀的配置无效,并且在提交时会被拒绝。例如,包含一个针对前缀为 `test`第二条规则针对的是带有前缀的对象 `test2`是不允许的。
必须使用StorageGRID端点的 URN 指定目标。提交元数据通知配置时,端点必须存在,否则请求失败,因为 400 Bad Request
。错误信息指出: Unable to save the metadata notification (search) policy. The specified endpoint URN does not exist: URN.
<MetadataNotificationConfiguration> <Rule> <ID>Rule-1</ID> <Status>rule-status</Status> <Prefix>key-prefix</Prefix> <Destination> <Urn>arn:aws:es:region:account-ID:domain/mydomain/myindex/mytype</Urn> </Destination> </Rule> <Rule> <ID>Rule-2</ID> ... </Rule> ... </MetadataNotificationConfiguration>
该表描述了元数据通知配置 XML 中的元素。
名称 | 描述 | 必填项 |
---|---|---|
元数据通知配置 |
用于指定元数据通知的对象和目的地的规则的容器标签。 包含一个或多个 Rule 元素。 |
是 |
规则 |
规则的容器标签,用于标识应将其元数据添加到指定索引的对象。 前缀重叠的规则将被拒绝。 包含在 MetadataNotificationConfiguration 元素中。 |
是 |
ID |
规则的唯一标识符。 包含在 Rule 元素中。 |
否 |
状态 |
状态可以是“启用”或“禁用”。对于已禁用的规则,不会采取任何措施。 包含在 Rule 元素中。 |
是 |
前缀 |
与前缀匹配的对象会受到规则的影响,并且其元数据会被发送到指定的目标。 要匹配所有对象,请指定一个空前缀。 包含在 Rule 元素中。 |
是 |
目标 |
规则目标的容器标签。 包含在 Rule 元素中。 |
是 |
瓮 |
发送对象元数据的目标的 URN。必须是具有以下属性的StorageGRID端点的 URN:
端点是使用租户管理器或租户管理 API 进行配置的。它们的形式如下:
必须在提交配置 XML 之前配置端点,否则配置将失败并出现 404 错误。 Urn 包含在 Destination 元素中。 |
是 |
请求示例
此示例显示启用存储桶的搜索集成。在此示例中,所有对象的对象元数据都被发送到同一个目的地。
PUT /test1?x-ntap-sg-metadata-notification HTTP/1.1 Date: date Authorization: authorization string Host: host <MetadataNotificationConfiguration> <Rule> <ID>Rule-1</ID> <Status>Enabled</Status> <Prefix></Prefix> <Destination> <Urn>urn:sgws:es:::sgws-notifications/test1/all</Urn> </Destination> </Rule> </MetadataNotificationConfiguration>
在此示例中,与前缀匹配的对象的对象元数据 `/images`发送到一个目的地,而与前缀匹配的对象的对象元数据 `/videos`被发送到第二个目的地。
PUT /graphics?x-ntap-sg-metadata-notification HTTP/1.1 Date: date Authorization: authorization string Host: host <MetadataNotificationConfiguration> <Rule> <ID>Images-rule</ID> <Status>Enabled</Status> <Prefix>/images</Prefix> <Destination> <Urn>arn:aws:es:us-east-1:3333333:domain/es-domain/graphics/imagetype</Urn> </Destination> </Rule> <Rule> <ID>Videos-rule</ID> <Status>Enabled</Status> <Prefix>/videos</Prefix> <Destination> <Urn>arn:aws:es:us-west-1:22222222:domain/es-domain/graphics/videotype</Urn> </Destination> </Rule> </MetadataNotificationConfiguration>
搜索集成服务生成的 JSON
当您为存储桶启用搜索集成服务时,每次添加、更新或删除对象元数据或标签时都会生成一个 JSON 文档并将其发送到目标端点。
此示例展示了当对象具有以下键时可以生成的 JSON 示例 SGWS/Tagging.txt`在名为 `test
。这 `test`bucket 没有版本控制,因此 `versionId`标签为空。
{ "bucket": "test", "key": "SGWS/Tagging.txt", "versionId": "", "accountId": "86928401983529626822", "size": 38, "md5": "3d6c7634a85436eee06d43415012855", "region":"us-east-1", "metadata": { "age": "25" }, "tags": { "color": "yellow" } }
元数据通知中包含的对象元数据
该表列出了启用搜索集成时发送到目标端点的 JSON 文档中包含的所有字段。
文档名称包括存储桶名称、对象名称和版本 ID(如果存在)。
类型 | 项目名称 | 描述 |
---|---|---|
存储桶和对象信息 |
存储分段 |
存储桶的名称 |
存储桶和对象信息 |
密钥 |
对象键名 |
存储桶和对象信息 |
版本ID |
对象版本,适用于版本化存储桶中的对象 |
存储桶和对象信息 |
地区 |
例如,存储桶区域 |
系统元数据 |
大小 |
HTTP 客户端可见的对象大小(以字节为单位) |
系统元数据 |
md5 |
对象哈希 |
用户元数据 |
元数据
|
对象的所有用户元数据,以键值对的形式 |
标签 |
标签
|
为对象定义的所有对象标签,以键值对的形式 |
|
对于标签和用户元数据, StorageGRID将日期和数字作为字符串或 S3 事件通知传递给 Elasticsearch。要配置 Elasticsearch 将这些字符串解释为日期或数字,请按照 Elasticsearch 的动态字段映射和映射日期格式的说明进行操作。在配置搜索集成服务之前,您必须在索引上启用动态字段映射。文档被索引后,您无法在索引中编辑文档的字段类型。 |