問題の説明
PutBucketLifecycleリクエストのリクエストボディXMLには、複数のルールが含まれています。 ルールは重複するプレフィックスを含み、競合するライフサイクルルールを指します。
原因
PutBucketLifecycleリクエストを送信します。 リクエストボディXMLには複数のルールが含まれています。 ルールは重複するプレフィックスを含み、競合するライフサイクルルールを指します。 ライフサイクルルールを設定する前に、次の項目に注意してください。
ライフサイクルルールを設定すると、オブジェクトのIAへの変換とアーカイブを同時に設定できます。 アーカイブへの変換時間は、IAへの変換時間より後でなければなりません。
オブジェクトの有効期限は、オブジェクトがIAまたはアーカイブに変換された時刻よりも後でなければなりません。
設定されたルールが上記の要件を満たさない場合、リクエストエラーが報告されます。
例
次のrequesでは、3つのルールが設定されます。
最初のルールには
テスト
プレフィックスが含まれ、プレフィックスに一致するオブジェクトが最後に変更されてから120日後にIAのストレージクラスに変換されることを指定します。2番目のルールには、
test/log
プレフィックスが含まれ、プレフィックスと一致するオブジェクトが、オブジェクトが最後に変更されてから60日後にアーカイブのストレージクラスに変換されることを指定します。3番目のルールには、
test/log/cache
プレフィックスが含まれ、プレフィックスと一致するオブジェクトが最後に変更されてから30日後に削除されることを指定します。
上記のルールには、重複するプレフィックスが含まれます。 ルールでは、オブジェクトが最後に変更されてから120日後にIA
に変換され、オブジェクトが最後に変更されてから60日後にアーカイブ
に変換され、オブジェクトが最後に変更されてから30日後に削除されることを個別に指定します。 その結果、リクエストエラーが報告される。
PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix> テスト </Prefix>
<Status>Enabled</Status>
<Transition>
<日> 120</日>
<StorageClass>IA</StorageClass>
</Transition>
</Rule>
<Rule>
<ID>rule2</ID>
<Prefix>test/log</Prefix>
<Status>Enabled</Status>
<Transition>
<Days>60</Days>
<StorageClass>Archive</StorageClass>
</Transition>
<Rule>
<ID>rule3</ID>
<Prefix>test/log/cache</Prefix>
<Status>Enabled</Status>
<Expiration>
<Days>30</Days>
</Expiration>
</ルール>
</LifecycleConfiguration>
ソリューション
異なるルールに重複するプレフィックスが含まれている場合は、ストレージクラスの変換と削除に有効期限を設定してください。
PUT /? ライフサイクルHTTP/1.1 ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com コンテンツ-長さ: 336 日付: 5月6日月曜日2019 15:23:20 GMT 承認: OSS Wnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a **** <?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <Rule> <ID>rule1</ID> <Prefix> テスト </Prefix> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>IA</StorageClass> </Transition> </Rule> <Rule> <ID>rule2</ID> <Prefix>test/log</Prefix> <Status>Enabled</Status> <Transition> <Days>60</Days> <StorageClass>Archive</StorageClass> </Transition> <Rule> <ID>rule3</ID> <Prefix>test/log/cache</Prefix> <Status>Enabled</Status> <Expiration> <日> 120</日> </Expiration> </ルール> </LifecycleConfiguration>
OSSコンソールでライフサイクルルールを設定して、リクエストボディを手動で作成しないようにします。