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.0export 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_0e3427349b547480d7ba8ddc06b6fd8fContainer: 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일이 지나면 버킷 내부에 있는 파일이 모두 삭제된것을 확인할수 있습니다. 
 
   |