객체 버전 관리는 삭제된 객체를 버전이 지정된 이전 객체로 보존하며, 명시적으로 삭제될 때까지 버킷에서 액세스할 수 있는 상태로 유지됩니다. 이 기능은 객체 변경사항을 추적하고 객체의 특정 버전을 복구하는 데 사용됩니다. 이 페이지는 이 기능 및 함께 사용할 수 있는 옵션을 설명합니다.
실수 또는 악의적인 삭제로 인한 영구적인 데이터 손실을 방지하려면 객체 버전 관리 대신 소프트 삭제를 사용하는 것이 좋습니다. 소프트 삭제 및 객체 버전 관리를 사용하는 경우에 대한 자세한 내용은 고려사항을 참조하세요.
소개
버킷에 대한 객체 버전 관리를 사용 설정합니다. 사용 설정되면
서비스 중인 버전의 세대 번호를 지정하지 않는 한 서비스 중인 객체 버전을 대체하거나 삭제할 때마다 Cloud Storage는 이전 객체 버전을 보존합니다.
이전 버전은 객체 이름은 유지하지만, 세대 번호로 고유하게 식별됩니다.
이전 버전은 이전 버전을 포함하도록 명시적으로 요청하는 경우에만 나타납니다.
삭제 요청에 세대 번호를 포함하거나 객체 수명 주기 관리를 사용하여 객체의 이전 버전을 삭제합니다.
소프트 삭제가 사용 설정된 버킷에서 소프트 삭제 보관 기간이 종료될 때까지 이전 객체를 영구적으로 삭제할 수 없습니다. 이전 객체를 삭제하면 Cloud Storage 상태가 소프트 삭제로 변경됩니다. 소프트 삭제된 객체는 소프트 삭제 보관 기간이 만료되면 영구적으로 삭제됩니다.
객체의 이전 버전은 서비스 중인 버전과는 독립적으로 존재합니다.
객체 버전 관리를 중지하는 경우:
버킷은 이전 버전의 새 객체를 더 이상 축적하지 않습니다.
이미 버킷에 있는 객체 버전은 영향을 받지 않습니다.
고려사항
- 현재 보관 정책이 설정되어 있는 버킷에는 객체 버전 관리를 사용 설정할 수 없습니다.
보유할 수 있는 객체 버전 수에는 기본 제한이 없습니다. 객체의 현재 버전이 아닌 각 버전에는 서비스 중일 때와 동일한 요금이 청구됩니다.
이전 삭제 요금은 객체가 이전 버전이 될 때가 아닌 객체 버전이 버킷에서 삭제된 경우에만 적용됩니다. 버킷에서 삭제된 버전의 스토리지 기간은 이전 버전이 되는 시간이 아닌 버킷에 추가된 시간을 기준으로 합니다.
버전 관리를 사용하는 경우, 지정된 시간이 지난 후 또는 최신 버전이 이전 버전이 됨에 따라 이전 버전의 객체를 삭제할 수 있는 객체 수명 주기 관리를 사용하는 것이 좋습니다. 한 가지 가능한 설정은 객체 삭제를 위한 수명 주기 구성 예시를 참조하세요.
버킷에서 객체 버전 관리 또는 소프트 삭제를 사용 설정할지 여부를 결정하려면 다음 사항을 고려하세요.
- 실수 또는 악의적인 삭제로 인한 영구적인 데이터 손실을 방지하려면 객체 버전 관리 대신 소프트 삭제를 사용하세요. 소프트 삭제는 최근에 삭제된 라이브 또는 이전 객체를 모두 보존하여 버킷 수준의 보호를 제공합니다. 또한 버킷 수준 삭제로부터 방지합니다.
특정 결제 요구사항이 있고 지정된 수의 이전 버전을 유지하기 위해 프리픽스를 사용하여 객체 수명 주기 관리 규칙을 구성한 경우 객체 버전 관리를 사용합니다.
이러한 시나리오에서는 객체 버전 관리가 버킷 수준 이벤트나 원치 않는 이전 객체 삭제에 대한 보호를 제공하지 않으므로 실수로 인한 삭제로부터 부분적인 보호만 얻을 수 있습니다.
이전 객체는 액세스 및 읽기가 가능한 반면, 소프트 삭제된 객체는 오프라인으로 보관되고 읽을 수 없습니다. 소프트 삭제된 객체를 복원하려면 스토리지 관리자(
roles/storage.admin
) IAM 역할에 사용할 수 있는 특정 IAM 권한이 필요합니다.가장 최근에 삭제된 객체에 액세스하고 우발적 및 악의적인 삭제 이벤트로 인한 영구적인 데이터 손실에 대한 높은 수준의 보호를 원하는 경우 동일한 버킷에서 객체 버전 관리 및 소프트 삭제를 사용 설정하면 됩니다. 객체 수명 주기 관리 정책을 구성하여 특정 일 수 후에 이전 버전을 자동으로 삭제하도록 소프트 삭제를 사용하여 추가적인 보호 레이어를 제공할 수 있습니다.
이전 객체 메타데이터
객체의 이전 버전에는 자체 메타데이터가 있으며, 이는 서비스 중인 버전의 메타데이터와 다를 수 있습니다. 가장 중요한 점은 이전 버전이 ACL을 유지하며, 서비스 중인 버전과 반드시 동일한 권한을 갖지는 않는다는 것입니다.
서비스 중인 버전이나 이전 버전에 관계없이 각 버전에는 하나의 메타데이터 집합이 있으며, 오직 최신 메타 세대 번호만 메타데이터를 참조합니다. 이전 메타 세대 번호는 이후에 변경된 메타데이터 액세스에 사용될 수 없습니다.
요청에 generation
을 지정하여 이전 객체 버전의 메타데이터를 업데이트할 수 있습니다. 안전한 읽기-수정-쓰기 시맨틱스를 보장하기 위해 메타 세대 일치 전제 조건을 사용할 수 있습니다. 메타데이터를 읽은 시점과 업데이트를 보낸 시점 간에 업데이트하려는 메타데이터가 변경된 경우, 이 전제 조건을 사용하면 업데이트에 실패합니다.
객체 버전 관리 예시
이 예시에서는 객체 버전 관리 및 소프트 삭제가 사용 설정된 상태에서 파일을 대체, 업데이트, 삭제할 때 버킷의 cat.jpg
파일에 무슨 일이 발생하는지 보여줍니다.
- 새 이미지 업로드
우선
cat.jpg
를 Cloud Storage에 업로드하면generation
번호와metageneration
번호가 수신됩니다. 이 예시에서 세대 번호는1360887697105000
입니다. 객체가 새 객체이므로metageneration
번호는1
입니다.객체 버전 관리가 사용 설정되지 않아도
cat.jpg
는generation
및metageneration
번호를 받습니다. 객체 메타데이터를 확인하여 이러한 수치를 가져올 수 있습니다.- 객체 버전 관리 사용 설정
이 시점에서 버킷에 객체 버전 관리를 사용하기로 결정합니다. 이렇게 해도
cat.jpg
의generation
또는metageneration
번호는 영향을 받지 않습니다.- 이미지의 메타데이터 변경
cat.jpg
의 메타데이터는 커스텀 메타데이터를 추가하여 업데이트할 수 있습니다.color:black
. 메타데이터를 업데이트하면cat.jpg
의metageneration
값이 증가합니다(이 경우1
에서2
로). 하지만 객체 자체는 변경되지 않으므로, Cloud Storage는 계속해서 한 버전의cat.jpg
만 보관하며 버전의generation
번호는 계속1360887697105000
입니다.- 새로운 버전의 이미지 업로드
Cloud Storage 버킷에
cat.jpg
의 새 버전을 업로드합니다. 이때 객체 버전 관리가 기존cat.jpg
객체를 이전 상태로 옮깁니다. 이전 버전은 이전과 동일한 스토리지 클래스와 메타데이터를 유지합니다. 이전 버전은 사용자가 버전 관리된 목록 나열을 수행하는 경우에만 나타나며, 일반적인 목록 나열 명령어에는 나타나지 않습니다. 이제 이전 버전은cat.jpg#1360887697105000
으로 참조됩니다.한편 새로 업로드된
cat.jpg
는 서비스 중인 객체 버전이 됩니다. 이 새로운cat.jpg
는 고유한generation
번호를 가지며, 이 예시에서는1360887759327000
입니다. 또한 새 버전은 고유 메타데이터를 가지며metageneration
번호는1
입니다. 즉, 사용자가 지정할 때까지color:black
메타데이터는 포함되지 않습니다.cat.jpg,
에 액세스하거나 수정하는 경우 이 버전이 사용됩니다. 또는generation
번호를 사용하여 이cat.jpg
버전을 참조할 수 있습니다. 예를 들어 Google Cloud CLI를 사용할 때는 이를cat.jpg#1360887759327000
이라고 합니다.- 이미지의 서비스 중인 버전 삭제
이제
cat.jpg
를 삭제합니다. 이때 세대 번호가1360887759327000
이었던 버전이 이전 버전이 됩니다. 이제 버킷에는cat.jpg
의 2가지 이전 버전이 있으며 서비스 중인 버전은 없습니다.generation
번호를 사용하여 어떤 이전 버전이든 계속 참조할 수 있지만generation
없이cat.jpg
액세스를 시도할 경우 오류가 발생합니다.마찬가지로, 버킷의 일반 객체 목록은
cat.jpg
를 버킷의 객체 중 하나로 표시하지 않습니다. 객체의 이전 버전 나열에 대한 자세한 내용은 이전 객체 버전 나열을 참조하세요.- 객체 버전 관리 중지
객체 버전 관리를 중지하면 객체가 이전 버전이 되지 않습니다. 객체의 기존 이전 버전은 Cloud Storage에 남아 있습니다. 객체 버전 관리가 중지되더라도
cat.jpg#1360887697105000
및cat.jpg#1360887759327000
은 삭제할 때까지 버킷에 저장되어 있습니다.- 이전 버전 중 하나 복원
객체 버전 관리를 사용하지 않더라도 기존의 이전 버전 중 하나의 사본을 만들어 효과적으로 버전을 복원할 수 있습니다. 이렇게 하면 버킷에는 이전 버전 2개와 복원에서 가져온 서비스 중인 버전 등 3가지 버전의
cat.jpg
가 있습니다.- 이전 버전 중 하나 삭제
객체의 이전 버전을 수동으로 또는 객체 수명 주기 관리를 사용하여 삭제할 수 있습니다.
이전 버전인
cat.jpg#1360887697105000
을 삭제하면 소프트 삭제됩니다. 이 소프트 삭제된 객체는 버킷의 소프트 삭제 정책에 지정된 소프트 삭제 보관 기간 동안 보관됩니다. 보관 기간이 만료되면 Cloud Storage에서 이 객체의 소프트 삭제된 버전을 영구 삭제합니다.- 소프트 삭제된 객체 버전 중 하나 복원
객체 버전 관리를 사용하지 않더라도 이전 객체의 소프트 삭제된 버전을 복원할 수 있습니다. 소프트 삭제된 버전의 복사본은 새 객체 메타데이터 및 새 생성 날짜가 포함된 서비스 중인 버전으로 복원됩니다. 소프트 삭제된 원본 객체도 버킷에 남아 있으며 소프트 삭제 보관 기간이 만료되면 영구적으로 삭제됩니다.
객체 버전 관리 참조
이 참조 표는 객체 버전 관리로 특정 작업을 수행할 때 발생하는 결과를 보여줍니다.
객체 버전 관리 상태 | 소프트 삭제 상태 | 작업 | 결과 |
---|---|---|---|
사용 중지됨 | 사용 중지됨 | ||
dog.png 를 삭제합니다. |
dog.png 가 완전히 삭제됩니다. |
||
세대 번호를 지정하여 dog.png 의 이전 버전을 삭제합니다.1 |
이전 버전이 완전히 삭제됩니다. | ||
dog.png 를 새 버전으로 대체합니다. |
새 버전이 서비스 중인 버전을 대체하며 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 완전히 삭제됩니다. | ||
서비스 중인 버전에 dog.png 의 이전 버전을 복사합니다.1 |
이전 버전의 사본이 서비스 중인 버전을 대체하고 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 완전히 삭제됩니다. | ||
사용 중지됨 | 사용 설정됨 | ||
dog.png 를 삭제합니다. |
dog.png 가 소프트 삭제됩니다. |
||
세대 번호를 지정하여 dog.png 의 이전 버전을 삭제합니다.1 |
이전 버전이 소프트 삭제됩니다. | ||
dog.png 를 새 버전으로 대체합니다. |
새 버전이 서비스 중인 버전을 대체하며 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 소프트 삭제됩니다. | ||
서비스 중인 버전에 dog.png 의 이전 버전을 복사합니다.1 |
이전 버전의 사본이 서비스 중인 버전을 대체하고 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 소프트 삭제됩니다. | ||
사용 설정됨 | 사용 중지됨 | ||
세대 번호를 지정하지 않고 dog.png 의 서비스 중인 버전을 삭제합니다. |
서비스 중인 버전은 이전 버전이 되며 동일한 세대 번호를 유지합니다. | ||
세대 번호를 지정하여 dog.png 의 서비스 중인 버전을 삭제합니다. |
서비스 중인 버전이 완전히 삭제됩니다. | ||
세대 번호를 지정하여 dog.png 의 이전 버전을 삭제합니다. |
이전 버전이 완전히 삭제됩니다. | ||
dog.png 를 새 버전으로 대체합니다. |
새 버전이 서비스 중인 버전을 대체하며 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 이전 버전이 되며 동일한 세대 번호를 유지합니다. | ||
dog.png 의 이전 버전을 서비스 중인 버전에 복사합니다. |
이전 버전의 사본이 서비스 중인 버전을 대체하고 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 이전 버전이 되며 동일한 세대 번호를 유지합니다. | ||
사용 설정됨 | 사용 설정됨 | ||
세대 번호를 지정하지 않고 dog.png 의 서비스 중인 버전을 삭제합니다. |
서비스 중인 버전은 이전 버전이 되며 동일한 세대 번호를 유지합니다. | ||
세대 번호를 지정하여 dog.png 의 서비스 중인 버전을 삭제합니다. |
서비스 중인 버전이 소프트 삭제됩니다. | ||
세대 번호를 지정하여 dog.png 의 이전 버전을 삭제합니다. |
이전 버전이 소프트 삭제됩니다. | ||
dog.png 를 새 버전으로 대체합니다. |
새 버전이 서비스 중인 버전을 대체하며 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 이전 버전이 되며 동일한 세대 번호를 유지합니다. | ||
dog.png 의 이전 버전을 서비스 중인 버전에 복사합니다. |
이전 버전의 사본이 서비스 중인 버전을 대체하고 새로운 세대 번호를 받습니다. 이전의 서비스 중인 버전이 이전 버전이 되며 동일한 세대 번호를 유지합니다. |
1 이전에 버킷에서 객체 버전 관리를 사용 설정한 경우 이전 버전이 존재할 수 있습니다.
파일 복원 동작
이전 객체 버전을 현재 서비스 중인 버전으로 효과적으로 복원할 수 있습니다. 작업을 위한 단계별 가이드는 이전 객체 버전 복원을 참조하세요.
객체 버전 관리가 사용 설정된 상태로 이 작업을 수행할 경우 버킷에 객체의 서비스 중인 버전이 있으면 Cloud Storage가 기존의 서비스 중인 버전을 대체하지만 새로운 이전 버전으로 보존합니다. 이러한 경우 이후 버킷에는 대체된 객체(현재 이전 버전)와 이전에 이전 버전이었던 객체 복사본 두 개(서비스 중인 복사본 한 개와 여전히 이전 버전인 복사본 한 개)가 포함되며 이들 모두에 대한 스토리지 비용이 청구됩니다. 불필요한 청구를 방지하려면 현재 서비스 중인 버전을 만드는 데 사용한 이전 버전 삭제 또는 객체 수명 주기 관리를 구성하여 지정한 조건을 충족할 때 이전 객체를 삭제합니다.
다음 단계
- 객체 버전 관리 사용 설정 방법을 알아보세요.
- 이전 객체 사용
- 세대 및 메타세대 객체 속성에 대해 알아보세요.
- 객체 버전을 자동으로 관리할 수 있는 객체 수명 주기 관리에 대해 알아보세요.
- 객체 버전 관리를 사용한 객체 수명 주기 관리 예시를 참조하세요.