lifecycle
lifecycle은 버킷 또는 내부에 있는 파일에 특정 조건을 지정하여 버킷내의 파일을 다른곳으로 이동하거나 삭제합니다.
여기서는 삭제에 관해 설명합니다.
프로그램에 따른 차이점
- swift : 버킷 내부에 있는 파일 1개만 설정한다.
- aws, cyberduck : 버킷 자체에 설정함으로써 내부에 있는 파일에 영향이 있다.
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일이 지나면 버킷 내부에 있는 파일이 모두 삭제된것을 확인할수 있습니다.
|