StorageGRID의 S3 라이프사이클 구성에 대해 알아보십시오
StorageGRID 시스템에서 특정 객체가 삭제되는 시점을 제어하기 위해 S3 수명 주기 구성을 생성할 수 있습니다.
이 섹션의 간단한 예제는 S3 수명 주기 구성을 통해 특정 S3 버킷에서 특정 객체가 삭제(만료)되는 시점을 제어하는 방법을 보여줍니다. 이 섹션의 예제는 설명 목적으로만 제공됩니다. S3 수명 주기 구성 생성에 대한 자세한 내용은 "Amazon Simple Storage Service 사용자 가이드: 객체 수명 주기 관리"을 참조하십시오. StorageGRID는 만료 작업만 지원하며 전환 작업은 지원하지 않습니다.
라이프사이클 구성이란 무엇인가요?
수명 주기 구성은 특정 S3 버킷의 객체에 적용되는 규칙 집합입니다. 각 규칙은 어떤 객체가 영향을 받는지, 그리고 해당 객체가 언제 만료되는지(특정 날짜 또는 일정 기간 후)를 지정합니다.
StorageGRID는 라이프사이클 구성에서 최대 1,000개의 라이프사이클 규칙을 지원합니다. 각 규칙에는 다음 XML 요소가 포함될 수 있습니다.
-
만료: 지정된 날짜가 되거나 객체가 수집된 시점으로부터 지정된 일수가 경과하면 객체를 삭제합니다.
-
NoncurrentVersionExpiration: 개체가 비활성 상태가 된 시점부터 지정된 일수가 경과하면 개체를 삭제합니다.
-
필터(접두사, 태그)
-
상태
-
ID
각 객체는 S3 버킷 수명 주기 또는 ILM 정책의 보존 설정을 따릅니다. S3 버킷 수명 주기가 구성된 경우, 버킷 수명 주기 필터와 일치하는 객체에 대해서는 수명 주기 만료 작업이 ILM 정책을 재정의합니다. 버킷 수명 주기 필터와 일치하지 않는 객체는 ILM 정책의 보존 설정을 사용합니다. 객체가 버킷 수명 주기 필터와 일치하고 만료 작업이 명시적으로 지정되지 않은 경우, ILM 정책의 보존 설정은 사용되지 않으며 객체 버전은 영구적으로 보존되는 것으로 간주됩니다. "S3 버킷 수명 주기 및 ILM 정책에 대한 우선순위 예시"을 참조하십시오.
결과적으로, ILM 규칙의 배치 지침이 해당 객체에 여전히 적용되더라도 객체가 그리드에서 제거될 수 있습니다. 또는, 객체에 대한 ILM 배치 지침의 유효 기간이 만료된 후에도 객체가 그리드에 남아 있을 수 있습니다. 자세한 내용은 "ILM이 객체의 수명 주기 전반에 걸쳐 작동하는 방식"을 참조하십시오.
|
|
버킷 수명 주기 구성은 S3 Object Lock이 활성화된 버킷에서 사용할 수 있지만, 버킷 수명 주기 구성은 레거시 규정 준수 버킷에서는 지원되지 않습니다. |
StorageGRID는 수명 주기 구성을 관리하기 위해 다음 버킷 작업의 사용을 지원합니다.
-
DeleteBucketLifecycle
-
GetBucketLifecycleConfiguration
-
PutBucketLifecycleConfiguration
라이프사이클 구성 생성
라이프사이클 구성을 만드는 첫 번째 단계로, 하나 이상의 규칙이 포함된 JSON 파일을 만듭니다. 예를 들어, 이 JSON 파일에는 다음과 같이 세 가지 규칙이 포함되어 있습니다.
-
규칙 1은 접두사
category1/와 일치하고 `key2`값이 `tag2`인 객체에만 적용됩니다. `Expiration`매개변수는 필터와 일치하는 객체가 2020년 8월 22일 자정에 만료됨을 지정합니다. -
규칙 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"
}
]
}
버킷에 수명 주기 구성 적용
라이프사이클 구성 파일을 생성한 후 PutBucketLifecycleConfiguration 요청을 실행하여 해당 파일을 버킷에 적용합니다.
이 요청은 예제 파일의 수명 주기 구성을 `testbucket`라는 이름의 버킷에 있는 객체에 적용합니다.
aws s3api --endpoint-url <StorageGRID endpoint> put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://bktjson.json
버킷에 수명 주기 구성이 성공적으로 적용되었는지 확인하려면 GetBucketLifecycleConfiguration 요청을 실행하십시오. 예를 들면 다음과 같습니다.
aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration --bucket testbucket
성공적인 응답에는 방금 적용한 라이프사이클 구성이 나열됩니다.
버킷 수명 주기 만료가 객체에 적용되는지 확인합니다.
PutObject, HeadObject 또는 GetObject 요청을 실행할 때 수명 주기 구성의 만료 규칙이 특정 개체에 적용되는지 여부를 확인할 수 있습니다. 규칙이 적용되는 경우 응답에는 Expiration 개체가 만료되는 시점과 일치하는 만료 규칙을 나타내는 매개변수가 포함됩니다.
|
|
버킷 수명 주기가 ILM을 재정의하므로 expiry-date 표시되는 날짜는 객체가 실제로 삭제되는 날짜입니다. 자세한 내용은 "오브젝트 보존 기간 결정 방법"을 참조하십시오.
|
예를 들어, 이 PutObject 요청은 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\""
}
예를 들어, 이 HeadObject 요청은 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": {}
}
|
|
버전 관리가 활성화된 버킷의 경우 x-amz-expiration 응답 헤더는 객체의 현재 버전에만 적용됩니다.
|