안녕하세요.
임태빈입니다.
이번 포스팅에서는 제가 배포 파일들을 어떻게 하면 버전 관리를 어떻게 할지 고민했고
s3 Versioning을 사용하는 방법에 대해 작성해보려고 합니다.
이 방법에 경우 저희가 이름을 지정을 해줘야 하기 때문에 빌드를 할 때 마다 번거로움이 생길 것이라 생각이 들었으며 계속해서 쌓이는
배포파일들의 양도 무시할 수 없다는 생각이 들었습니다.
또한, 같은 이름이지만 버전도 여러개가 될 수 있기에 문제가 발생할 수 있는 여지가 충분히 있다고 생각이 들었습니다.
Versioning에 경우 첫번째 발생하는 방법에 대해서 대부분이 커버가 될 수 있습니다.
처음 배포하는 파일에 대한 이름만 잘 설정해준다면 날짜,버전 등에 대한 세부내용을 파악할 수 있으며
Aws SDK를 활용해서 이전 버전에 파일도 다시 다운 받을 수 있습니다. 저는 이 부분이 좋아서
S3 Versioning을 사용하려고 합니다.
Versioning 활성화를 하는 방법은 총 두 가지가 있습니다.
첫번째는 버킷을 생성할 때 아래 사진에서 활성화로 변경해주면 됩니다.
두번째 방법은 이미 만들어진 버킷에서 속성에 들어가 버킷 버전관리 편집을 눌러 활성화를 진행해주시면 됩니다.
이렇게 진행을 해주시면 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를 활용해 키의 버전들을 출력해주는 내용입니다. 필요하신 분들께서는 이것을 활용해서 사용해보시면 좋을 거 같습니다.
오늘 알려드릴 내용은 이걸로 끝이며 다음에 더 좋은 내용으로 포스티 해보도록 하겠습니다. 감사합니다~