S3 버전 관리 작동 방식 - Amazon Simple Storage Service

S3 버전 관리 작동 방식

S3 버전 관리를 사용하여 한 버킷에 여러 버전의 객체를 보관함으로써 실수로 삭제되거나 덮어써진 객체를 복원할 수 있습니다. 예를 들어, 버킷에 S3 버전 관리를 적용하는 경우 다음과 같은 변경 사항이 발생합니다.

  • 객체를 영구적으로 제거하는 대신 삭제하는 경우, Amazon S3에서는 삭제 마커를 삽입하며 이는 현재 객체 버전이 됩니다. 따라서 나중에 이전 버전을 복원할 수 있습니다. 자세한 내용은 버전 관리가 사용 설정된 버킷에서 객체 버전 삭제 단원을 참조하십시오.

  • 객체를 덮어쓴 경우 Amazon S3가 버킷에 새 객체 버전을 추가합니다. 이전 버전은 버킷에 남아 있고 현재 버전이 아닌 버전이 됩니다. 이전 버전을 복원할 수 있습니다.

참고

저장되거나 전송된 객체의 모든 버전에는 일반 Amazon S3 요금이 적용됩니다. 각 객체 버전은 이전 버전과의 차이점만 포함된 것이 아닌 완전한 객체입니다. 따라서 세 가지 버전의 객체가 저장된 경우 객체 세 개에 대한 요금이 부과됩니다.

생성한 각 S3 버킷에는 버전 관리 하위 리소스가 연결되어 있습니다. (자세한 내용은 버킷 구성 옵션 섹션을 참조하세요.) 기본적으로 버킷은 버전 관리 미사용 상태이며, 버전 관리 하위 리소스는 다음과 같이 빈 버전 관리 구성을 저장합니다.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </VersioningConfiguration>

버전 관리를 활성화하려면 Amazon S3에 Enabled 상태가 포함된 버전 관리 구성을 사용하여 요청을 보내면 됩니다.

<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Status>Enabled</Status> </VersioningConfiguration>

버전 관리를 일시 중지하려면 상태 값을 Suspended로 설정합니다.

참고

버킷에서 버전 관리를 처음으로 활성화할 때 변경 사항이 완전히 전파되는 데 시간이 조금 걸릴 수 있습니다. 버전 관리를 활성화하고 나서 15분 정도 기다린 후, 버킷의 객체에 대해 쓰기 작업(PUT 또는 DELETE)을 실행하는 것이 좋습니다.

버킷 소유자 및 모든 승인된 AWS Identity and Access Management(IAM) 사용자는 버전 관리를 활성화할 수 있습니다. 버킷 소유자는 버킷을 생성한 AWS 계정입니다. 권한에 대한 자세한 내용은 Amazon S3의 Identity and Access Management 섹션을 참조하세요.

AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 REST API를 사용하여 S3 버전 관리를 사용하고 사용 중지하는 방법에 대한 자세한 내용은 버킷에 버전 관리 사용 설정 섹션을 참조하세요.

버전 ID

버킷에 대한 버전 관리를 사용 설정하면 Amazon S3는 저장되는 객체에 대해 고유한 버전 ID를 자동으로 생성합니다. 예를 들어, photo.gif(버전 111111) 및 photo.gif(버전 121212)와 같이 하나의 버킷에서 키(객체 이름)는 동일하지만 버전 ID가 다른 두 개의 객체를 보유할 수 있습니다.


                키는 같지만 버전 ID가 다른 객체 두 개가 있는 버전 관리가 활성화된 버킷에서 S3 버전 관리가 작동하는 방식을 보여주는 다이어그램입니다.

각 객체에는 S3 버전 관리가 사용되는지 여부에 관계없이 버전 ID가 있습니다. S3 버전 관리를 활성화하지 않으면 Amazon S3가 버전 ID의 값을 null로 설정합니다. S3 버전 관리를 사용 설정한 경우 Amazon S3는 객체에 대한 버전 ID 값을 할당합니다. 이 값은 해당 객체를 동일한 키의 다른 버전과 구별해 줍니다.

기존 버킷에 S3 버전 관리를 사용 설정하는 경우 버킷에 이미 저장된 객체는 변경되지 않습니다. 버전 ID(null), 콘텐츠, 그리고 권한은 동일하게 유지됩니다. 버전 관리를 활성화하면 버킷에 추가된 각 객체가 동일한 키의 다른 버전과 구별되는 버전 ID를 가져옵니다.

Amazon S3는 버전 ID만 생성하며 버전 ID를 편집할 수 없습니다. 버전 ID는 유니코드, UTF-8 인코딩, URL 지원, 불투명 문자열이며 길이가 1,024바이트를 넘지 않습니다. 다음은 그 한 예입니다.

3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo

참고

간단한 설명을 위해 이 주제의 다른 예제에서는 훨씬 더 짧은 ID를 사용합니다.

버전 관리 워크플로

버전 관리를 사용하는 버킷에 객체를 PUT할 때 비 최신 버전은 덮어쓰지 않습니다. 다음 그림과 같이 동일한 이름의 객체를 이미 보유하고 있는 버킷에 새 버전의 photo.gifPUT할 때 다음과 같은 동작이 발생합니다.

  • 원래 객체(ID = 111111)는 버킷에 남아 있습니다.

  • Amazon S3는 새 버전 ID(121212)를 생성하고 이 최신 버전의 객체를 버킷에 추가합니다.


                버전 관리가 활성화된 버킷에 객체를 PUT할 때 S3 버전 관리가 작동하는 방법을 보여주는 다이어그램입니다.

이 기능을 사용하면 객체를 실수로 덮어쓰거나 삭제한 경우 객체의 이전 버전을 검색할 수 있습니다.

객체를 DELETE하면 다음 그림과 같이 버킷에 모든 버전이 계속 유지되며 Amazon S3는 삭제 마커를 삽입합니다.


                버전 관리가 활성화된 버킷에 객체를 DELETE할 때 S3 버전 관리가 작동하는 방법을 보여주는 다이어그램.

삭제 마커가 객체의 최신 버전이 됩니다. 기본적으로 GET 요청은 가장 최근에 저장된 버전을 검색합니다. 최신 버전이 삭제 마커일 때 GET Object 요청을 수행하면 다음 그림과 같이 404 Not Found 오류가 반환됩니다.


                현재 버전이 삭제 마커일 때 버전 관리가 활성화된 버킷의 객체에 대한 GET 작업의 응답을 보여주는 다이어그램입니다.

하지만 버전 ID를 지정하여 최신 버전이 아닌 객체에 대해 GET을 실행할 수 있습니다. 다음 그림에서는 특정 객체 버전인 111111을 GET합니다. Amazon S3는 최신 버전이 아닌 해당 버전의 객체를 반환합니다.

자세한 내용은 버전 관리가 사용 설정된 버킷에서 객체 버전 검색 단원을 참조하십시오.


                버전 관리가 활성화된 버킷에 현재 버전이 아닌 객체를 GET할 때 S3 버전 관리가 작동하는 방법을 보여주는 다이어그램입니다.

삭제하고자 하는 버전을 지정하여 객체를 영구적으로 삭제할 수 있습니다. Amazon S3 버킷 소유자만이 영구적으로 버전을 삭제할 수 있습니다. DELETE 작업이 versionId를 지정하는 경우 해당 객체 버전은 영구 삭제되며 Amazon S3가 삭제 마커를 삽입하지 않습니다.


                삭제 마커를 삽입하지 않고 버전 관리가 활성화된 버킷에서 DELETE versionId가 특정 객체 버전을 영구적으로 삭제하는 방법을 보여주는 다이어그램입니다.

다중 인증(MFA) 삭제를 활성화하도록 버킷을 구성하여 보안을 강화할 수 있습니다. 버킷에 MFA 삭제를 활성화하는 경우 버킷 소유자는 버전을 삭제하거나 버킷의 버전 관리 상태를 변경하는 모든 요청에 두 가지 형식의 인증을 포함해야 합니다. 자세한 내용은 MFA Delete 구성 단원을 참조하십시오.

객체의 새 버전은 언제 생성됩니까?

객체의 새 버전은 새 객체에 PUT 작업을 수행할 때만 생성됩니다. CopyObject와 같은 특정 작업은 PUT 작업을 구현하여 작동한다는 점에 유의하세요.

현재 객체를 수정하는 일부 작업에서는 새 객체에 PUT 작업을 수행하지 않으므로 새 버전이 생성되지 않습니다. 여기에는 객체의 태그 변경과 같은 작업이 포함됩니다.

중요

S3 버전 관리를 사용하는 버킷에 대한 Amazon S3 객체 PUT 또는 DELETE 요청에서 받은 HTTP 503(서비스 사용 불가) 응답의 횟수가 크게 증가한다면 버전이 무수히 많은 객체가 하나 이상 버킷에 있을 것으로 추정됩니다. 자세한 내용은 문제 해결의 S3 버전 관리 섹션을 참조하세요.