S3ライフサイクル設定の作成

S3ライフサイクル設定を作成して、特定のオブジェクトがStorageGRIDシステムから削除されるタイミングを制御することができます。

このセクションでは、特定のオブジェクトが特定のS3バケットから削除される(期限切れになる)タイミングをS3ライフサイクル設定でどのように制御できるかを、簡単な例で説明します。このセクションの例は、例示のみを目的としています。S3ライフサイクル設定の作成に関する詳細については、『Amazon Simple Storage Service開発者ガイド』でオブジェクトのライフサイクル管理に関するセクションを参照してください。StorageGRIDではExpirationアクションのみがサポートされ、Transitionアクションはサポートされないので注意してください。

Amazon Simple Storage Service開発者ガイド:オブジェクトのライフサイクル管理

ライフサイクル設定とは

ライフサイクル設定は、特定のS3バケット内のオブジェクトに適用される一連のルールです。各ルールでは、影響を受けるオブジェクトとその有効期限(特定の日付または特定の日数後)が指定されます。

StorageGRIDでは、1つのライフサイクル設定で最大1,000個のライフサイクル ルールがサポートされます。各ルールには次のXML要素を追加できます。
  • Expiration:指定の日付に達したとき、またはオブジェクトが取り込まれた日から指定の日数が経過したときに、オブジェクトを削除します。
  • NoncurrentVersionExpiration:オブジェクトが最新でなくなってから指定の日数が経過したときにオブジェクトを削除します。
  • Filter(Prefix、Tag)
  • Status
  • ID

バケットにライフサイクル設定を適用すると、そのライフサイクル設定は常にStorageGRIDのILM設定よりも優先されます。StorageGRIDは、ILMではなくバケットのExpiration設定を使用して、特定のオブジェクトを削除するか保持するかを決定します。

このため、ILMルールの配置手順がオブジェクトに適用されている場合でも、オブジェクトがグリッドから削除されることがあります。あるいは、ILMのオブジェクト配置手順がすべて終了したあとも、オブジェクトがグリッドに保持されることがあります。詳細については、StorageGRIDの管理手順の中のオブジェクトのライフサイクル全体にわたるILMの動作を参照してください。

注: 準拠バケットではライフサイクル設定がサポートされません。
StorageGRIDでは、次のバケット処理を使用してライフサイクル設定を管理できます。
  • DELETE Bucket lifecycle
  • GET Bucket lifecycle
  • PUT Bucket lifecycle

ライフサイクル設定の作成

ライフサイクル設定を作成するには、まず1つ以上のルールを含むJSONファイルを作成します。たとえば、次の3つのルールを含むJSONファイルを作成します。
  1. ルール1は、プレフィックスがcategory1/で、かつkey2の値がtag2であるオブジェクトにのみ適用されます。Expirationパラメータでは、フィルタに一致するオブジェクトが、2020年8月22日の午前0時に期限切れになるように指定します。
  2. ルール2は、プレフィックスがcategory2/であるオブジェクトにのみ適用されます。Expirationパラメータでは、フィルタに一致するオブジェクトが、取り込まれてから100日後に期限切れになるように指定します。
    注意: 日数を指定するルールは、オブジェクトが取り込まれた時点を基準とする相対的なルールです。現在の日付が取り込み日に日数を加算した日付を過ぎている場合は、ライフサイクル設定の適用後すぐに一部のオブジェクトがバケットから削除されることがあります。
  3. ルール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には実際にオブジェクトが削除される日付が示されます。詳細については、StorageGRIDの管理手順の中のオブジェクト保持期間の決定方法を参照してください。

たとえば、次の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": {}
}