삭제 마커 작업
삭제 마커 작업 (Working with delete markers)
Amazon S3의 삭제 마커(delete marker) 는 간단한 DELETE 요청에 지정된 버전 관리 객체의 자리 표시자(또는 마커)예요. 간단한 DELETE 요청은 버전 ID를 지정하지 않는 요청이에요. 객체가 버전 관리 활성화 버킷에 있으므로 객체는 삭제되지 않아요. 하지만 삭제 마커는 Amazon S3가 마치 객체가 삭제된 것처럼 동작하게 해요. 삭제 마커에 대해 Amazon S3 API DELETE 호출을 사용할 수 있어요. 그러려면 적절한 권한을 가진 AWS Identity and Access Management(IAM) 사용자 또는 역할을 사용해 DELETE 요청을 만들어야 해요.
삭제 마커에는 다른 객체와 마찬가지로 키 이름(또는 키)과 버전 ID가 있어요. 그러나 삭제 마커는 다음과 같은 점에서 다른 객체와 달라요.
- 삭제 마커에는 연결된 데이터가 없어요.
- 삭제 마커는 액세스 제어 목록(ACL) 값과 연결되지 않아요.
- 삭제 마커에 대해
GET요청을 보내면, 삭제 마커에 데이터가 없으므로GET요청은 아무것도 검색하지 않아요. 구체적으로GET요청이versionId를 지정하지 않으면 404(Not Found) 오류가 발생해요.
삭제 마커는 Amazon S3에서 스토리지에 대해 아주 적은 요금이 발생해요. 삭제 마커의 스토리지 크기는 삭제 마커의 키 이름 크기와 같아요. 키 이름은 유니코드 문자 시퀀스예요. 키 이름의 UTF-8 인코딩은 이름의 각 문자마다 버킷에 1~4바이트의 스토리지를 추가해요. 삭제 마커는 S3 Standard 스토리지 클래스에 저장돼요.
삭제 마커가 몇 개이고 어떤 스토리지 클래스에 저장되어 있는지 확인하려면 Amazon S3 Storage Lens를 사용할 수 있어요. 자세한 내용은 Amazon S3 Storage Lens로 스토리지 활동 및 사용량 모니터링과 Amazon S3 Storage Lens 지표 용어집을 참고하세요.
키 이름에 대한 자세한 내용은 Amazon S3 객체 이름 지정을 참고하세요. 삭제 마커 삭제에 대한 자세한 내용은 삭제 마커 관리를 참고하세요.
삭제 마커는 Amazon S3만 만들 수 있으며, 버전 관리 활성화 또는 일시 중단 버킷의 객체에 DeleteObject 요청을 보낼 때마다 만들어져요. DELETE 요청에 지정된 객체는 실제로 삭제되지 않아요. 대신 삭제 마커가 객체의 현재 버전이 돼요. 객체의 키 이름(또는 키)이 삭제 마커의 키가 돼요.
요청에 versionId를 지정하지 않고 객체를 가져올 때, 그 현재 버전이 삭제 마커이면 Amazon S3는 다음처럼 응답해요.
- 404(Not Found) 오류
x-amz-delete-marker: true응답 헤더
요청에 versionId를 지정해 객체를 가져올 때, 지정된 버전이 삭제 마커이면 Amazon S3는 다음처럼 응답해요.
- 405(Method Not Allowed) 오류
x-amz-delete-marker: true응답 헤더Last-Modified: timestamp응답 헤더(HeadObject또는GetObjectAPI 작업을 사용할 때만)
x-amz-delete-marker: true 응답 헤더는 접근한 객체가 삭제 마커임을 알려줘요. 이 응답 헤더는 false를 반환하지 않아요. 값이 false이면 객체의 현재 버전 또는 지정된 버전이 삭제 마커가 아니기 때문이에요. Last-Modified 응답 헤더는 삭제 마커의 생성 시간을 제공해요.
다음 그림은 현재 버전이 삭제 마커인 객체에 대한 GetObject API 호출이 404(Not Found) 오류로 응답하고, 응답 헤더에 x-amz-delete-marker: true가 포함되는 방식을 보여줘요.
요청에 versionId를 지정해 객체에 GetObject 호출을 하고, 지정된 버전이 삭제 마커이면 Amazon S3는 405(Method Not Allowed) 오류로 응답하고 응답 헤더에 x-amz-delete-marker: true와 Last-Modified: timestamp가 포함돼요.
삭제 마커는 덮어써져도 객체 버전에 그대로 남아요. 삭제 마커(및 객체의 다른 버전)를 나열하는 유일한 방법은 ListObjectVersions 요청을 사용하는 것이에요. 이 요청은 AWS Management Console에서 일반 용도 버킷의 객체를 나열하고 Show versions를 선택해 만들 수 있어요. 자세한 내용은 버전 관리 활성화 버킷의 객체 나열을 참고하세요.
다음 그림은 ListObjectsV2 또는 ListObjects 요청이 현재 버전이 삭제 마커인 객체를 반환하지 않는 것을 보여줘요.
출처: 문서