Amazon S3 객체 삭제
Amazon S3 콘솔, AWS SDK, AWS Command Line Interface(AWS CLI) 또는 REST API를 사용하여 Amazon S3에서 직접 하나 이상의 객체를 삭제할 수 있습니다. 예를 들어 로그 파일을 수집하는 경우, 더 이상 필요가 없는 로그 파일은 삭제하는 것이 좋습니다. 로그 파일과 같은 객체를 자동으로 삭제하도록 S3 수명 주기 규칙을 설정할 수 있습니다.
객체를 삭제하려면 다음 API 작업 중 하나를 사용하면 됩니다.
-
단일 객체 삭제 – Amazon S3는 단일 HTTP 요청으로 하나의 객체를 삭제할 수 있는
DELETE
(DeleteObject
) API를 제공합니다. -
여러 객체 삭제 – Amazon S3는 단일 HTTP 요청에서 최대 1,000개의 객체를 삭제하는 데 사용할 수 있는 Multi-Object Delete(
DeleteObjects
) API를 제공합니다.
버전 관리가 활성화되지 않은 버킷에서 객체를 삭제할 때는 객체 키 이름만 제공합니다. 그러나 버전 관리가 활성화된 버킷에서 객체를 삭제할 때는 객체의 버전 ID를 제공하여 특정 버전의 객체를 삭제할 수 있습니다.
객체를 삭제하기 전에 고려해야 할 모범 사례
객체를 삭제하기 전에 다음 모범 사례를 고려하세요.
-
버킷 버전 관리를 활성화합니다. S3 버전 관리는 단순
DeleteObject
요청에 대한 보호 기능을 추가하여 실수로 인한 삭제를 방지합니다. 버전이 지정된 버킷의 경우, 객체의 현재 버전을 삭제하거나 삭제 요청에 특정 버전 ID가 지정되지 않았다면 Amazon S3는 객체를 영구적으로 삭제하지 않습니다. 대신 S3가 삭제 마커를 추가하여 객체를 소프트 삭제합니다. 그러면 삭제 마커는 새 버전 ID를 가진 객체의 현재(또는 최신) 버전이 됩니다. 자세한 내용은 버전 관리가 활성화된 버킷에서 객체 버전 삭제를 참조하세요. -
다수의 객체를 삭제하거나 객체를 만든 날짜를 기준으로 프로그래밍 방식으로 객체를 삭제하려면 버킷에 S3 수명 주기 구성을 설정하세요. 이러한 삭제를 모니터링하려면 S3 수명 주기 이벤트 알림을 사용하는 것이 좋습니다. S3 수명 주기 알림을 구성하면 버킷의 객체가 삭제될 때
s3:LifecycleExpiration:Delete
이벤트 유형이 알려줍니다. S3 수명 주기 구성에 의해 객체 버전이 영구적으로 삭제될 때도 알려줍니다.s3:LifecycleExpiration:DeleteMarkerCreated
이벤트 유형은 S3 수명 주기에서 삭제 마커를 생성할 때 알려줍니다. 삭제 마커는 버전이 지정된 버킷에 있는 객체의 현재 버전이 삭제될 때 생성됩니다. -
S3 수명 주기 구성을 업데이트하기 전에 수명 주기가 의도한 모든 객체에 대한 작업을 완료했는지 확인하세요. 자세한 내용은 버킷에서 S3 수명 주기 구성 설정의 수명 주기 규칙 업데이트, 사용 중지 또는 삭제 섹션을 참조하세요.
참고
의도하지 않은 삭제를 방지하려면 S3 수명 주기 규칙을 올바른 객체 하위 집합에 적용해야 합니다. 수명 주기 규칙을 만들 때 접두사, 객체 태그 또는 객체 크기별로 객체를 필터링할 수 있습니다.
-
사용자가 버킷에서 객체를 제거하거나 삭제하는 것을 제한해 보세요. 사용자를 제한하려면 Amazon S3 버킷 정책에서 다음 작업에 대한 사용자 권한을 명시적으로 거부해야 합니다.
-
s3:DeleteObject
,s3:DeleteObjectVersion
(API 요청을 사용하여 객체를 삭제할 수 있는 사람을 제어하기 위한 목적) -
s3:PutLifecycleConfiguration
(S3 수명 주기 만료 규칙을 추가할 수 있는 사람을 제어하기 위한 목적)
-
-
S3 복제를 사용하여 여러 데이터 사본을 생성하고 이를 다양한 위치에 한 번에 복제하는 것을 고려해 보세요. 필요한 만큼 대상 버킷을 선택할 수 있습니다. 또한, 객체가 실수로 삭제되더라도 데이터 사본은 계속 남아 있습니다.
버전 관리가 활성화된 버킷에서 객체 삭제
버전 관리를 사용하는 버킷에서는 동일한 객체에 여러 버전이 존재할 수 있습니다. 버전 관리가 활성화된 버킷에서 작업할 때 Delete
API 작업은 다음과 같은 옵션을 제공합니다.
-
버전이 지정되지 않은 삭제 요청 지정 - 버전 ID가 아닌 객체의 키만 지정합니다. 이 경우 Amazon S3는 현재 버전의 객체에 대해 삭제 마커를 생성하고 응답에서 버전 ID를 반환합니다. 그 결과 객체가 버킷에서 보이지 않습니다. 객체 버전 관리 및 삭제 마커 개념에 대한 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 단원을 참조하십시오.
-
버전이 지정된 삭제 요청 지정 - 키와 버전 ID를 모두 지정합니다. 이 경우 다음과 같은 결과가 나올 수 있습니다.
-
버전 ID가 특정 객체 버전과 일치할 경우 Amazon S3는 해당 특정 버전의 객체를 삭제합니다.
-
버전 ID가 객체의 삭제 마커와 일치할 경우 Amazon S3는 삭제 마커를 삭제합니다. 삭제 마커가 삭제되면 객체가 버킷에 다시 나타납니다.
-
버전 관리가 일시 중지된 버킷에서 객체 삭제
버킷의 버전 관리가 일시 중단된 경우, Delete
API 작업은 버전 관리가 활성화된 버킷에 대해 동일한 방식으로 작동합니다(현재 버전의 버전 ID가 null인 경우는 제외). 자세한 내용은 버전 관리가 일시 중지된 버킷에서 객체 삭제 단원을 참조하십시오.
버전이 지정되지 않은 버킷에서 객체 삭제
버킷에 버전이 지정되지 않은 경우 Delete
API 작업에서 객체 키를 지정할 수 있으며 Amazon S3가 객체를 영구적으로 삭제할 수 있습니다. 객체의 영구 삭제를 방지하려면 버킷 버전 관리를 활성화하세요.
MFA를 사용하는 버킷에서 객체 삭제
멀티 팩터 인증(MFA)을 사용하는 버킷에서 객체를 삭제할 경우 다음과 같은 사항에 주의합니다.
-
유효하지 않은 MFA 토큰을 제공할 경우 요청은 항상 실패합니다.
-
MFA가 사용된 버킷에서 버전을 지정한 삭제를 요청(객체 키 및 버전 ID 제공)할 경우 MFA 토큰이 올바르지 않으면 요청에 실패합니다. 또한, MFA가 활성화된 버킷에서 다중 객체
Delete
API 작업을 사용할 때 버전이 지정된 삭제 요청(객체 키 및 버전 ID 제공) 시 MFA 토큰을 제공하지 않으면 요청이 모두 실패로 끝납니다.
그러나 다음과 같은 경우에는 요청이 성공합니다.
-
MFA가 활성화된 버킷에서 버전이 지정되지 않은 삭제를 요청하고(버전이 지정된 객체를 삭제하지 않음) MFA 토큰을 제공하지 않으면 삭제가 성공합니다.
-
Multi-Object Delete 요청 시 MFA가 활성화된 버킷에서 버전이 지정되지 않은 객체들만 삭제하도록 지정하고 MFA 토큰을 제공하지 않으면 삭제가 성공합니다.
MFA 삭제에 대한 자세한 내용은 MFA Delete 구성 섹션을 참조하십시오.