ECS:オブジェクト ライフサイクル ポリシーに有効期限が切れないバージョン
Summary: オブジェクトを自動的に削除するオプション「Expiration」を指定した、ユーザーが構成したオブジェクト ライフサイクル ポリシー。ただし、バケットのバージョン管理が有効になっているため、最新バージョン以外のバージョンは削除されません。
Symptoms
注:次の問題は、一時停止またはバージョン管理が無効になっているバケットには適用されません。
1.バージョン対応バケットでは、次の例のようにライフサイクル ポリシーが設定され、オブジェクトが期限切れになります。ポリシーは、1日後に自動的に期限切れになり、オブジェクトを削除するように構成されました。
<?xml version="1.0" ?> <LifecycleConfiguration xmlns="http://s3.companyaws.com/doc/2006-03-01/"> <Rule> <ID>Expire Objects</ID> <Prefix/> <Status>Enabled</Status> <Expiration> <Days>1</Days> </Expiration> </Rule> </LifecycleConfiguration>
2.バージョンが作成されていないオブジェクトの場合、前述のオブジェクト有効期限ポリシーにより、現在のオブジェクトを置き換えるために削除マーカーが挿入されます。したがって、現在のオブジェクトは削除されるのではなく、現在のバージョン以外のバージョンになります
例:
ポリシーが満たされる前に、1つのオブジェクトと最新のオブジェクトがあります
[VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: 54270 [OBJECT]: sample.object
ポリシーが一致した後(1日後)、有効期限が切れますが、オブジェクトはnoncurrentバージョンになり、dmarkerが最新のオブジェクトとして挿入されます。
[VERSION_ID]: 1558539371262 [IS_LATEST]: false [MTIME]: 2019-05-22T15:36:11.262Z [SIZE]: 54270 [OBJECT]: sample.object >>> original object becomes non current version [VERSION_ID]: 1558539564138 [IS_LATEST]: true [MTIME]: 2019-05-22T15:39:24.138Z [SIZE]: DMARKER [OBJECT]: sample.object >>> DMarker inserted as latest version.
このポリシーでオブジェクトが完全に削除されることを期待しているユーザーがいることを確認します。
Cause
前のセクションで説明したポリシーの例から得られる期待は、バケットのバージョン管理には正しくありません。ただし、非バージョン管理バケットの場合は、バージョン管理のないバケットの場合、オブジェクトはすぐに期限切れになり、削除されて回復不能になるため、これは当てはまります。
対照的に、バージョン管理バケットでは、S3プロトコルはオブジェクトの有効期限を異なる方法で処理し、代わりにオブジェクトを現行以外のバージョンに移動します。また、プレースホルダーとして削除マーカーを追加します。バケットのバージョン管理により、オブジェクトのバージョンをリカバリーできるため、ポリシー設定に応じて猶予期間によるリカバリーが可能になります。これは予期された動作です。
S3のライフサイクル ポリシー、バージョン管理、有効期限の詳細については、この記事の下部にある「追加情報」セクションのリファレンスを参照してください。
Resolution
バージョンが有効なバケットでは、以下のライフサイクル ポリシーの例を使用することを推奨します。代わりに、現行以外のバージョンが期限切れになり、マーカーも削除されます(バージョン管理バケット内のオブジェクトを直接削除した結果)。
Example:
この例では、S3は現在の各オブジェクト バージョンに削除マーカーを追加することで、作成から60日後に現在のバージョン(オブジェクト)を削除します。このプロセスにより、現在のバージョンが最新でなくなり、削除マーカーが現在のバージョンになります。
、 NoncurrentVersionExpiration アクションは、noncurrentオブジェクトがnoncurrentになってから30日後に削除されます。したがって、この例では、オブジェクトの作成から90日後に、すべてのオブジェクトのバージョンが完全に削除されます。
重要な注意事項: ライフサイクル ポリシーは慎重に処理し、アプリケーションのニーズに合った日数とアクションを指定する必要があります。以下のポリシーは一例にすぎません。dmarkersとnoncurrentバージョンの両方を失効させ、削除を回復不能にします。
<LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>
Additional Information
バージョン管理されたバケットとバージョン管理されていないバケットでのポリシーの有効期限の動作の詳細については、こちらを参照してください。
https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html
https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#intro-lifecycle-rules-actions
https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex7
ライフサイクル ポリシーの設定方法の詳細については、ECSデータ アクセス ガイドを参照してください
https://dl.dell.com/content/manual53094723-ecs-3-8-x-data-access-guide.pdf