Linux Object Stroage bucket versioning

| 2020년 6월 26일 | 0 Comments

versioning 


versioning는 버킷 내부에 있는 파일에 객체 ID값을 부여하는 기능을 가지고 있으며 같은 이름의 파일을 업로드시 원본 파일은 삭제되는 기존의 버킷과는 달리 
삭제하지 않고 숨김 처리를 하여 사용자가 실수로 파일을 잘못 수정 후 업로드 했을때 부여된 객체 ID값을 통해 이전 파일을 복구할수 있습니다.

 

 

versioning의 특징

  • 중복 파일 업로드시 이전 파일은 삭제되지 않고 숨김 파일로 변경된다.
  • 원하는 시점의 파일을 다운로드 또는 삭제등의 작업이 가능하다.


 

versioning 설정 방법 : aws_cli

 

1. 인증키 설정

1. 유저 produser의 profile을 작성하기위해 .aws 디렉토리를 생성합니다.

root@iwinv:~# mkdir ~/.aws

 

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

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

[profile produser]

 

3. 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

 

4. config, credentials 파일의 권한을 600으로 변경합니다.

root@iwinv:~# chmod 600 ~/.aws/config ~/.aws/credentials

 

 2. versioning 설정

1. versioning 기능은 버킷이 없을경우 적용할수 없습니다. 이 글에서는 임시 버킷인 “iwinv_bucket”을 생성하고 설정을 진행합니다.

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

 

2. “–versioning-configuration Status=Enabled” 설정을 통해 버킷 “iwinv_bucket”에 versioning 기능이 활성화 되도록 설정합니다.

root@iwinv:~# aws s3api put-bucket-versioning –endpoint=https://kr.object.iwinv.kr –bucket=iwinv_bucket –versioning-configuration Status=Enabled –profile produser

 

3. 아래의 명령어를 사용하여 “Status”가 “Enabled”로 적혀있는지를 확인합니다.

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

{
    “Status”: “Enabled“,
    “MFADelete”: “Disabled”
}

 

3. versioning 설정 확인

1. versioning 설정이 정상적으로 됐는지 확인하기 위해 임시로 파일을 생성합니다.

root@iwinv:~# echo “Iwinv test File” > vps.conf
root@iwinv:~# cat vps.conf 
Iwinv test File

 

2. 생성한 파일을 버킷에 업로드 합니다.

root@iwinv:~# aws s3 cp ./vps.conf s3://iwinv_bucket –endpoint-url https://kr.object.iwinv.kr –profile produser

 

3. 생성한 파일에 내용을 추가합니다.

root@iwinv:~# echo “Hello” >> vps.conf

root@iwinv:~# cat vps.conf 
Iwinv test File
Hello 

 

4. 동일 파일을 업로드시 “–key”에는 원본 이름을 “–body”는 업로드할 파일명을 적어주면 업로드 후 VersionId가 생성됩니다.

root@iwinv:~# aws s3api put-object –endpoint=https://kr.object.iwinv.kr  –bucket=iwinv_bucket –key vps.conf –body ./vps.conf –profile produser

{
    “ETag”: “\”d46370e0f513199145d3c38044ebd54b\””,
    “VersionId”: “2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp
}

 

5. 아래의 명령어를 사용하면 현재 파일과 과거 파일의 객체 ID 리스트를 보여줍니다. “LastModified”를 통해 파일이 업로드 된 순서를 볼수 있습니다.

root@iwinv:~# aws s3api list-object-versions –endpoint=https://kr.object.iwinv.kr –bucket=iwinv_bucket –profile produser

{
    “Versions”: [
        {
            “ETag”: “\”d46370e0f513199145d3c38044ebd54b\””,
            “Size”: 28,
            “StorageClass”: “STANDARD”,
            “Key”: “vps.conf”,
            “VersionId”: “
2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp“,
            “IsLatest”: true,
            “LastModified”: “2020-06-12T04:42:42.680000+00:00”,
            “Owner”: {
                “DisplayName”: “iwinv”,
                “ID”: “9b547c06b8dd480d7ba6fd8f0e342734”
            }
        },
        {
            “ETag”: “\”d635685f48ff4235112e03816d9fd453\””,
            “Size”: 16,
            “StorageClass”: “STANDARD”,
            “Key”: “vps.conf”,
            “VersionId”: “.RT1mWEcw9uu4JaIpF15boLnXsPa-By“,
            “IsLatest”: false,
            “LastModified”: “2020-06-12T04:42:12.898000+00:00”,
            “Owner”: {
                “DisplayName”: “iwinv”,
                “ID”: “9b547c06b8dd480d7ba6fd8f0e342734”
            }
        }
    ]
}

 

6. 처음 업로드 했던 파일을 다운로드 받아보겠습니다. 받은 파일을 열어보면 처음에 생성했던 파일을 확인할수 있습니다.

root@iwinv:~# aws s3api get-object –endpoint=https://kr.object.iwinv.kr –bucket=iwinv_bucket –key=vps.conf –profile produser –version-id=.RT1mWEcw9uu4JaIpF15boLnXsPa-By /usr/local/src/ori_vps.conf 
{
    “AcceptRanges”: “bytes”,
    “LastModified”: “2020-06-12T04:42:12+00:00”,
    “ContentLength”: 16,
    “ETag”: “\”d635685f48ff4235112e03816d9fd453\””,
    “VersionId”: “.RT1mWEcw9uu4JaIpF15boLnXsPa-By”,
    “ContentType”: “binary/octet-stream”,
    “Metadata”: {}
}

root@iwinv:~# cat /usr/local/src/ori_vps.conf 
Iwinv test File

 

7. 이번엔 처음 업로드 했던 파일의 객체를 삭제 해보겠습니다. 삭제후에 “LastModified”를 확인하면 최신 파일만 확인됩니다.

root@iwinv:~# aws s3api delete-object –endpoint=https://kr.object.iwinv.kr –bucket=iwinv_bucket –key=vps.conf –profile produser –version-id=.RT1mWEcw9uu4JaIpF15boLnXsPa-By 
{
    “VersionId”: “.RT1mWEcw9uu4JaIpF15boLnXsPa-By”
}

root@iwinv:~# aws s3api list-object-versions –endpoint=https://kr.object.iwinv.kr –bucket=iwinv_bucket –profile produser
{
    “Versions”: [
            {
                “ETag”: “\”d46370e0f513199145d3c38044ebd54b\””,
                “Size”: 28,
                “StorageClass”: “STANDARD”,
                “Key”: “vps.conf”,
                “VersionId”: “2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp”,
                “IsLatest”: true,
                “LastModified”: “2020-06-12T04:42:42.680000+00:00”,
                “Owner”: {
                    “DisplayName”: “iwinv”,
                    “ID”: “9b547c06b8dd480d7ba6fd8f0e342734”
                }
        }
    ]
}

 

 

 

 

Category: LINUX

Avatar

About the Author ()