0014-00000010

问题描述

PutBucketLifecycle请求的请求体XMLRule节点下存在多个Prefix子节点。

问题原因

您发起了Amazon S3兼容的PutBucketLifecycle请求,但是请求体XMLRule节点下存在多个Prefix子节点,而该接口要求每个Rule节点下只能包含一个Prefix子节点。

问题示例

以下Amazon S3兼容的PutBucketLifecycle请求体XMLRule节点下包含了2Prefix子节点。

PUT /?lifecycle HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 336
Date: Mon , 6 May 2019 15:23:20 GMT
Authorization: AWS Wnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>rule</ID>
    ......
    <Prefix>tmp/</Prefix>
    <Prefix>private/</Prefix>
 	</Rule>
 </LifecycleConfiguration>

解决方案

  • 确保请求中每个Rule节点下仅包含一个Prefix子节点。如果您需要设置多个Prefix子节点,您需要对应增加Rule节点。

    Prefix子节点用于指定规则所适用的前缀。

    • 如果指定了Prefix,则表示此规则仅适用于Bucket中与Prefix匹配的Object。

    • 如果Prefix置空,则表示此规则适用于Bucket中的所有Object。

  • 通过Amazon S3兼容的SDK发起请求。

  • 通过OSS管理控制台配置生命周期规则,避免手动构造请求体。

相关文档