S3 ライフサイクル設定を作成する
S3 ライフサイクル設定を作成して、特定のオブジェクトが StorageGRID システムから削除されるタイミングを制御できます。
このセクションの簡単な例では、 S3 ライフサイクル設定で特定のオブジェクトが特定の S3 バケットから削除(期限切れ)されるタイミングを制御する方法を示します。このセクションの例は、説明のみを目的としています。S3 ライフサイクル設定の作成の詳細については、を参照してください "『 Amazon Simple Storage Service Developer Guide 』:「 Object lifecycle management"。StorageGRID では、 Expiration アクションのみがサポートされ、移行アクションはサポートされません。
ライフサイクル構成とは
ライフサイクル設定は、特定の S3 バケット内のオブジェクトに適用される一連のルールです。各ルールは、影響を受けるオブジェクトと、それらのオブジェクトの有効期限(特定の日付または日数後)を指定します。
StorageGRID では、 1 つのライフサイクル設定で最大 1 、 000 個のライフサイクルルールがサポートされます。各ルールには、次の XML 要素を含めることができます。
-
Expiration :指定した日付に達した場合、またはオブジェクトが取り込まれたときから指定した日数に達した場合にオブジェクトを削除します。
-
NoncurrentVersionExpiration :指定した日数に達したオブジェクトを削除します。これは、オブジェクトが最新でなくなったときからです。
-
フィルタ(プレフィックス、タグ)
-
ステータス
-
ID
バケットにライフサイクル設定を適用する場合、バケットのライフサイクル設定は常に StorageGRID の ILM 設定よりも優先されます。StorageGRID は、 ILM ではなくバケットの Expiration 設定を使用して、特定のオブジェクトを削除するか保持するかを決定します。
そのため、 ILM ルールの配置手順がオブジェクトに引き続き適用されていても、オブジェクトがグリッドから削除されることがあります。あるいは、 ILM 配置手順がすべて終了したあとも、オブジェクトがグリッドに保持される場合があります。詳細については、を参照してください オブジェクトのライフサイクル全体にわたる ILM の動作。
バケットライフサイクル設定は S3 オブジェクトロックが有効になっているバケットで使用できますが、従来の準拠バケットではバケットライフサイクル設定がサポートされません。 |
StorageGRID では、次のバケット処理を使用してライフサイクル設定を管理できます。
-
バケットライフサイクルを削除
-
GET Bucket lifecycle
-
PUT Bucket lifecycle の場合
ライフサイクル構成を作成します
ライフサイクル設定を作成するための最初の手順として、 1 つ以上のルールを含む JSON ファイルを作成します。たとえば、この JSON ファイルには次の 3 つのルールが含まれています。
-
ルール 1 は、プレフィックス「 Category1`/ 」に一致するオブジェクトと「 key2` の値」が「 tag2` のオブジェクトにのみ適用されます。「 Expiration 」パラメータは、フィルタに一致するオブジェクトの有効期限が 2020 年 8 月 22 日の午前 0 時に切れるように指定します。
-
ルール 2 は、プレフィックス「 Category2`/ 」に一致するオブジェクトにのみ適用されます。’ Expiration ’パラメータを指定すると、フィルタに一致するオブジェクトの取り込みから 100 日後に期限切れになります。
日数を指定するルールは、オブジェクトが取り込まれた時点を基準とした相対的なルールです。現在の日付が取り込み日と日数を超えている場合は、ライフサイクル設定の適用後すぐに一部のオブジェクトがバケットから削除される可能性があります。 -
ルール 3 は、プレフィックス「 Category3/ 」に一致するオブジェクトにのみ適用されます。Expiration パラメータを指定すると ' 最新でないすべてのバージョンの一致オブジェクトが ' 最新でない状態になってから 50 日後に期限切れになります
{ "Rules": [ { "ID": "rule1", "Filter": { "And": { "Prefix": "category1/", "Tags": [ { "Key": "key2", "Value": "tag2" } ] } }, "Expiration": { "Date": "2020-08-22T00:00:00Z" }, "Status": "Enabled" }, { "ID": "rule2", "Filter": { "Prefix": "category2/" }, "Expiration": { "Days": 100 }, "Status": "Enabled" }, { "ID": "rule3", "Filter": { "Prefix": "category3/" }, "NoncurrentVersionExpiration": { "NoncurrentDays": 50 }, "Status": "Enabled" } ] }
バケットにライフサイクル設定を適用
ライフサイクル設定ファイルを作成したら、 PUT Bucket lifecycle 要求を発行してバケットに適用します。
この要求は、サンプルファイル内のライフサイクル設定を、「 testbucket 」という名前のバケット内のオブジェクトに適用します。
aws s3api --endpoint-url <StorageGRID endpoint> put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://bktjson.json
ライフサイクル設定がバケットに正常に適用されたことを検証するために、問題 には GET Bucket lifecycle 要求があります。例:
aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration --bucket testbucket
成功応答には、適用したライフサイクル設定が表示されます。
バケットライフサイクルの有効期限が環境 オブジェクトであることを検証します
PUT Object 、 HEAD Object 、または GET Object 要求の発行時に、ライフサイクル設定の有効期限ルールが環境 の特定のオブジェクトかどうかを確認できます。ルールが適用される場合、応答にはオブジェクトの有効期限と一致する有効期限ルールを示す「 Expiration 」パラメータが含まれます。
バケット・ライフサイクルは ILM よりも優先されるため ' 表示される「 expiry-date 」は ' オブジェクトが削除される実際の日付です詳細については、を参照してください オブジェクト保持期間の決定方法。 |
たとえば、この PUT Object 要求は 2020 年 6 月 22 日に発行され、「 testbucket 」バケットにオブジェクトを配置します。
aws s3api --endpoint-url <StorageGRID endpoint> put-object --bucket testbucket --key obj2test2 --body bktjson.json
成功の応答は、オブジェクトの有効期限が 100 日( 2020 年 10 月 1 日)に切れ、ライフサイクル設定のルール 2 に一致したことを示します。
{
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:49 GMT\", rule-id=\"rule2\"",
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
}
たとえば、この HEAD Object 要求を使用して、 testbucket バケット内の同じオブジェクトのメタデータを取得しました。
aws s3api --endpoint-url <StorageGRID endpoint> head-object --bucket testbucket --key obj2test2
成功の応答にはオブジェクトのメタデータが含まれ、オブジェクトが 100 日で期限切れになり、ルール 2 に一致したことが示されます。
{
"AcceptRanges": "bytes",
*"Expiration": "expiry-date=\"Thu, 01 Oct 2020 09:07:48 GMT\", rule-id=\"rule2\"",
"LastModified": "2020-06-23T09:07:48+00:00",
"ContentLength": 921,
"ETag": "\"9762f8a803bc34f5340579d4446076f7\""
"ContentType": "binary/octet-stream",
"Metadata": {}
}