S3 versioning

임태빈·2022년 1월 8일
0

aws

목록 보기
1/1

안녕하세요.

임태빈입니다.

이번 포스팅에서는 제가 배포 파일들을 어떻게 하면 버전 관리를 어떻게 할지 고민했고

s3 Versioning을 사용하는 방법에 대해 작성해보려고 합니다.

관리 선정

첫번째 방법 배포할 파일명 변경해서 배포하기

이 방법에 경우 저희가 이름을 지정을 해줘야 하기 때문에 빌드를 할 때 마다 번거로움이 생길 것이라 생각이 들었으며 계속해서 쌓이는

배포파일들의 양도 무시할 수 없다는 생각이 들었습니다.

또한, 같은 이름이지만 버전도 여러개가 될 수 있기에 문제가 발생할 수 있는 여지가 충분히 있다고 생각이 들었습니다.

두번째 방법 S3 Versioning을 통한 관리하기

Versioning에 경우 첫번째 발생하는 방법에 대해서 대부분이 커버가 될 수 있습니다.

처음 배포하는 파일에 대한 이름만 잘 설정해준다면 날짜,버전 등에 대한 세부내용을 파악할 수 있으며

Aws SDK를 활용해서 이전 버전에 파일도 다시 다운 받을 수 있습니다. 저는 이 부분이 좋아서

S3 Versioning을 사용하려고 합니다.

Versioning 기능 활성화하기

Versioning 활성화를 하는 방법은 총 두 가지가 있습니다.

첫번째는 버킷을 생성할 때 아래 사진에서 활성화로 변경해주면 됩니다.


두번째 방법은 이미 만들어진 버킷에서 속성에 들어가 버킷 버전관리 편집을 눌러 활성화를 진행해주시면 됩니다.

이렇게 진행을 해주시면 Versioning이 가능해집니다.

Versioning 예시

위 그림과 같이 동일한 파일을 업데이트 하면 저렇게 버전이 나누어진 것을 확인 하실 수 있습니다.

python을 활용한 Versioning 확인해보기

    def get_version_file(self,bucket_name,filename,fileurl=None):
        server_file_name = filename
        if fileurl is not None:
            server_file_name = fileurl+"/"+filename
        try:
            versions = self.s3.list_object_versions (Bucket = bucket_name, Prefix = server_file_name)
            versions = versions.get('Versions')
            if len(versions) == 0:
                return []
            elif len(versions) == 1:
                return versions
            else:
                versions = sorted(versions,key= itemgetter("LastModified"),reverse=True)
                return versions[1]
        except Exception as e:
            print("failed delete file")
            print(e)

이 코드는 파이썬에서 boto3를 활용해 키의 버전들을 출력해주는 내용입니다. 필요하신 분들께서는 이것을 활용해서 사용해보시면 좋을 거 같습니다.

오늘 알려드릴 내용은 이걸로 끝이며 다음에 더 좋은 내용으로 포스티 해보도록 하겠습니다. 감사합니다~

profile
golang과 서버 개발을 하고 있는 개발자입니다.

0개의 댓글