問題描述
PutBucketLifecycle請求的請求體XML中包含了Filter/Not節點,該節點下的Tag子節點取值與Rule節點下的Tag子節點取值相同。
問題原因
PutBucketLifecycle請求的請求體XML中Filter/Not節點下配置了Tag子節點,且Rule節點下也配置了Tag子節點,這兩個Tag子節點取值重複,導致請求錯誤。
問題樣本
以下請求中Filter/Not節點下包含了Tag子節點,該節點的取值為key1:value1。Rule節點下配置了兩組Tag,取值分別為key1::value1以及key2:value2。Tag子節點存在相同的取值。
PUT /?lifecycle HTTP/1.1
Host: oss-example.oss.aliyuncs.com
Content-Length: 336
Date: Mon , 6 May 2019 15:23:20 GMT
Authorization: OSSWnjl3fg9fdv8fg4b****:Phuu8bBhS8dsff2a****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>rule</ID>
<Prefix>test</Prefix>
<Status>Enabled</Status>
<Tag><Key>key1</Key><Value>value1</Value></Tag>
<Tag><Key>key2</Key><Value>value2</Value></Tag>
<Filter>
<Not>
<Prefix>test</Prefix>
<Tag><Key>key1</Key><Value>value1</Value></Tag>
</Not>
</Filter>
<Expiration>
<Days>100</Days>
</Expiration>
</Rule>
</LifecycleConfiguration>解決方案
確保請求中
Filter/Not節點下的Tag子節點取值與Rule節點下的Tag子節點取值不相同。通過OSS管理主控台配置生命週期規則,避免手動構造請求體。