오브젝트스토리지

Object Stroage bucket lifecycle

lifecycle


lifecycle은 버킷 또는 내부에 있는 파일에 특정 조건을 지정하여 버킷내의 파일을 다른곳으로 이동하거나 삭제합니다.
여기서는 삭제에 관해 설명합니다.

 

 

프로그램에 따른 차이점

 

 

lifecycle 리눅스 설정 방법: swift

 

1. swiftclient를 설치합니다.

root@iwinv:~# apt install python3-swiftclient 

 

2. swift의 접속 설정 파일을 iwinv 콘솔의 인증키 관리를 참고해서 적은 후 생성합니다.

root@iwinv:~# vi ~/swift-export

export ST_AUTH=https://kr.object.iwinv.kr/auth/1.0
export ST_USER=인증키 관리의 User ID:인증키 관리의 Access Key ID
export ST_KEY=인증키 관리의 Secret Key ID

 

3. 접속 설정 파일을 적용합니다.

root@iwinv:~# source ~/swift-export

 

4. 버킷 iwinv-swift를 생성합니다.

root@iwinv:~# swift post iwinv-swift

 

5. 버킷 iwinv-swift를 list로 확인해보면 테스트를 위한 ubuntu.iso 파일이 확인 됩니다.

root@iwinv:~# swift list iwinv-swift

ubuntu.iso

 

 

※ lifecycle는 두가지의 방법을 통해 기간이 만료된 파일을 삭제할수 있습니다.

 

6-1. X-Delete-At는 원하는 시간을 date 명령을 통해 타임스탬프로 변환하여 지정할수 있으며 해당 시간이 지나면 파일을 삭제합니다.  

root@iwinv:~# date -d "2020-06-25 04:05:00" +'%s'

1593025500

 

root@iwinv:~# swift post iwinv-swift ubuntu.iso -H "X-Delete-At:1593025500"

 

6-2. X-Delete-After는 원하는 시간을 1초 단위로 적용하여 지정할수 있으며 파일을 삭제합니다.

root@iwinv:~# swift post iwinv-swift ubuntu.iso -H "X-Delete-After:300"

 

7. X-Delete-At가 ubuntu.iso 파일에 설정 된것은 stat를 통해 볼수 있으며 삭제되는 시간은 perl 명령을 통해 확인할수 있습니다.

root@iwinv:~# swift stat iwinv-swift ubuntu.iso

Account: AUTH_0e3427349b547480d7ba8ddc06b6fd8f
Container: iwinv-swift
Object: ubuntu.iso
Content Type: application/x-iso9660-image
Content Length: 738197504
Last Modified: Wed, 24 Jun 2020 02:19:26 GMT
ETag: 1413c9797dbfa1e57fabfb5c91cfb96f
Accept-Ranges: bytes
X-Timestamp: 1592965166.21758
X-Delete-At: 1593025506
X-Trans-Id: tx000000000000000006fec-005ef2b833-15d05e1-default
X-Openstack-Request-Id: tx000000000000000006fec-005ef2b833-15d05e1-default

 

root@iwinv:~# perl -e 'print scalar localtime(1593025506)'
Thu Jun 25 04:05:06 2020

 

8. X-Remove-Delete-At로 파일에 설정된 lifecycle를 삭제할수 있으며 명령어 사용후 stat로 확인하면 X-Delete-At이 제거된것을 확인할수 있습니다.

root@iwinv:~# swift post iwinv-swift ubuntu.iso -H "X-Remove-Delete-At:"

 

root@iwinv:~# swift stat iwinv-swift ubuntu.iso

Account: AUTH_0e3427349b547480d7ba8ddc06b6fd8f
Container: iwinv-swift
Object: ubuntu.iso
Content Type: application/x-iso9660-image
Content Length: 738197504
Last Modified: Wed, 24 Jun 2020 02:19:43 GMT
ETag: 1413c9797dbfa1e57fabfb5c91cfb96f
Accept-Ranges: bytes
X-Timestamp: 1592965183.20545
X-Trans-Id: tx00000000000000000760a-005ef2e4bd-15d05e1-default
X-Openstack-Request-Id: tx00000000000000000760a-005ef2e4bd-15d05e1-default

 

 

 lifecycle 리눅스 설정 방법: aws

 

1. config 파일을 생성합니다.

root@iwinv:~# vi ~/.aws/config 

[profile produser]

 

2. credentials 파일의 "aws_access_key_id", "aws_secret_access_key"은 iwinv 콘솔의 인증키 관리를 참고해서 적은 후 생성합니다.

root@iwinv:~# vi ~/.aws/credentials

[produser]
aws_access_key_id = 인증키 관리의 Access Key ID
aws_secret_access_key = 인증키 관리의 Secret Key ID

 

3. lifecycle.json 파일을 아래와 같이 생성합니다. Days의 숫자는 1일을 뜻하며 설정하면 1일 뒤 버킷 내부에 있는 파일은 모두 삭제됩니다.

root@iwinv:~# vi lifecycle.json

{
    "Rules": [

        {
            "Expiration": {
                "Days": 1
            },
            "ID": "lifecycle-1",
            "Prefix": "",
            "Status": "Enabled"
        }
    ]
}

 

4. put-bucket-lifecycle-configuration로 lifecycle.json 파일을 지정하여 버킷에 설정을 등록합니다.

root@iwinv:~# aws s3api put-bucket-lifecycle-configuration --lifecycle-configuration file://lifecycle.json --bucket iwinv_bucket --endpoint-url=https://kr.object.iwinv.kr --profile produser

 

5. get-bucket-lifecycle-configuration로 설정이 정상적으로 들어갔는지 확인합니다.

root@iwinv:~# aws s3api get-bucket-lifecycle-configuration --bucket iwinv_bucket --endpoint-url=https://kr.object.iwinv.kr --profile produser
{
    "Rules": [
        {
            "Expiration": {
               "Days": 1
            },
            "ID": "lifecycle-1",
            "Prefix": "",
            "Status": "Enabled"
        }
    ]
}

 

6. delete-bucket-lifecycle를 사용하면 버킷내에 있는 lifecycle 설정을 제거할수 있습니다.

root@iwinv:~# aws s3api delete-bucket-lifecycle --bucket iwinv_bucket --endpoint-url=https://kr.object.iwinv.kr --profile produser

 

root@iwinv:~# aws s3api get-bucket-lifecycle-configuration --bucket iwinv_bucket --endpoint-url=https://kr.object.iwinv.kr --profile produser

An error occurred (NoSuchLifecycleConfiguration) when calling the GetBucketLifecycleConfiguration operation: Unknown

 

 

 

  lifecycle 리눅스 설정 방법: cyberduck

 

1. 버킷을 선택하고 "파일 > 정보"로 이동합니다. 

 

2. 정보에서 S3를 선택 후 생명주기의 "파일 삭제"를 클릭 후 삭제를 원하는 일자를 선택합니다. 

 

3. 설정하고 1일이 지나면 버킷 내부에 있는 파일이 모두 삭제된것을 확인할수 있습니다.