오브젝트스토리지

Object Stroage bucket versioning

versioning 


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

 

 

versioning의 특징


 

versioning 리눅스 설정 방법 : aws_cli

※ aws_cli 설치 방법 URL : https://help.iwinv.kr/manual/read.html?idx=746

 

 

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"
                }
        }
    ]
}

 

 

 

versioning 윈도우 설정 방법 : cyberduck

※ cyberduck 설치 방법 URL : https://help.iwinv.kr/manual/read.html?idx=743

 

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

 

2. 정보에서 S3를 선택 후 "버킷 버전부여"를 클릭합니다.

 

3. 메모장에 test_file을 생성하여 내용을 쓰고 저장하겠습니다.

 

4. 저장한 파일을 cyberduck를 통해 업로드합니다.

 

5. 업로드 한 뒤 아까 생성한 파일에 내용을 더 추가해서 저장하겠습니다.

 

6. 파일을 다시 업로드 하면 versioning이 설정된 상태임에도 덮어쓰기 항목이 나옵니다. "계속"을 클릭후 진행합니다.

 

7. 버킷 내부로 이동하여 "보기 > 숨겨진 파일들 보기"를 클릭합니다.

 

8. 파일 이름이 같으나 수정일이 다른 두개의 파일이 있는것을 확인할수 있습니다.