Amazon S3 버킷을 삭제할 수 없는 이유는 무엇입니까?

4분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷을 삭제할 수 없으며 이유를 잘 모르겠습니다.

해결 방법

전제조건

Amazon S3 버킷을 삭제하기 전에 다음 사항을 확인하십시오.

  • 모든 AWS 계정은 Amazon S3 네임스페이스를 공유합니다. 버킷 이름을 삭제하면 모든 사용자가 해당 이름을 사용할 수 있게 됩니다. 다른 AWS 계정에서 버킷 이름을 요청하면 해당 버킷 이름을 재사용할 수 없습니다. 버킷을 완전히 삭제하는 대신 버킷을 비우는 것이 가장 좋습니다.
  • 정적 웹 사이트로 호스팅되는 버킷의 경우 해당 버킷과 관련된 Amazon Route 53 호스팅 영역 설정을 검토 및 업데이트합니다.
  • 버킷이 로그 데이터를 수신하면 버킷을 삭제하기 전에 버킷으로의 로그 전송을 중단합니다.

Amazon S3 버킷이 비어 있지 않음

Amazon S3 버킷을 삭제하려면 버킷이 비어 있어야 합니다. AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 SDK를 사용하여 버킷을 수동으로 삭제합니다. 버킷이 크고 버전 관리가 구성된 경우 객체를 수동으로 삭제하는 데 시간이 오래 걸립니다. 이러한 경우에는 Amazon S3 수명 주기 구성을 사용하여 버킷을 비웁니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

버전 관리가 구성되어 있거나 일시 중단된 상태인 버킷의 경우 수명 주기 구성에 다음 규칙을 포함합니다.

  • 규칙 1: 생성하고 X일이 지나면 현재 버전의 모든 객체가 만료됩니다. 비최신 버전이 되고 Y일이 지나면 모든 비최신 버전의 객체를 영구적으로 삭제합니다.
  • 규칙 2: Z일 후에 모든 단일 삭제 마커와 불완전한 멀티파트 업로드가 만료됩니다.

버전 관리가 구성되지 않은 버킷의 경우 수명 주기 구성에 다음 규칙을 포함합니다.

  • 규칙 1: 객체 생성 후 X일이 경과하면 현재 버전의 객체가 모두 만료됩니다.
  • 규칙 2: Z일 후에 모든 불완전한 멀티파트 업로드가 만료됩니다.

참고: 이 예제에서 버킷을 빠르게 삭제하려면 X, Y, Z1일로 설정합니다.

Amazon S3는 매일 오전 12시(UTC)에 수명 주기 규칙을 실행합니다. 수명 주기 규칙을 실행한 후에는 만료될 수 있는 모든 객체가 삭제 대상으로 표시됩니다. 수명 주기 정책 작업은 비동기적이므로 객체가 버킷에서 물리적으로 삭제되는 데 며칠이 걸립니다. 객체가 삭제 대상으로 표시된 후에는 해당 객체와 연결된 스토리지에 대한 요금이 더 이상 청구되지 않습니다.

AWS CLI 사용

다음 명령을 실행하여 버전 관리가 구성되지 않은 Amazon S3 버킷에서 객체를 영구적으로 삭제합니다.

aws s3 rm s3://bucket-name --recursive

다음 명령을 실행하여 버전 관리가 구성되었거나 일시 중단된 Amazon S3 버킷의 모든 객체를 영구적으로 삭제합니다.

aws s3api delete-objects --bucket BUCKET_NAME --delete "$(aws s3api list-object-versions --bucket BUCKET_NAME --output=json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"

Amazon S3 콘솔 사용

  1. Amazon S3 콘솔을 엽니다.
  2. 탐색 창에서 버킷을 선택합니다.
  3. Buckets(버킷)에서 비우려는 버킷을 선택합니다. 그런 다음, Empty(비우기)를 선택합니다.
  4. Empty bucket(버킷 비우기) 페이지의 텍스트 필드에 permanently delete(영구 삭제)를 입력하여 버킷의 모든 객체를 삭제합니다. 그런 다음, Empty(비우기)를 선택합니다.
  5. (선택 사항) Empty bucket: Status(버킷 비우기: 상태)를 검토하여 비우기 진행 상황을 확인할 수 있습니다.

참고: Amazon S3 버킷의 객체 버전이 거버넌스 모드에서 잠긴 경우 AWS Identity and Access Management(IAM) 자격 증명에는 "s3:BypassGovernanceRetention" 권한이 필요합니다. 거버넌스 모드를 우회하려면 요청에 "x-amz-bypass-governance-retention:true" 헤더를 포함해야 합니다. AWS Management Console에서 수행한 요청의 경우 콘솔은 거버넌스 모드를 우회하는 데 필요한 권한을 사용하여 요청에 헤더를 자동으로 적용합니다.

보존 기간 동안 IAM 자격 증명은 규정 준수 모드에서 보호되는 객체 버전을 삭제할 수 없습니다. 여기에는 해당 계정의 루트 사용자가 포함됩니다. 보존 기간이 지나면 규정 준수로 보호되는 객체를 삭제합니다. 버킷이 비워지면 Amazon S3 버킷을 삭제합니다.

Amazon S3 버킷에는 연결된 액세스 포인트가 있습니다.

Amazon S3 버킷을 삭제하기 전에 버킷에 연결된 모든 액세스 포인트를 삭제합니다. 자세한 내용은 액세스 포인트 삭제를 참조하십시오.

DeleteBucket 요청을 수행하는 IAM 자격 증명에 충분한 권한이 없음

Amazon S3 버킷을 삭제하는 IAM 자격 증명에 IAM 정책에 대한 DeleteBucket 권한을 부여합니다. 또는 Amazon S3 버킷 정책에 DeleteBucket 작업을 수행하기 위한 권한을 부여합니다.

삭제를 방지하는 명시적 DENY 문

명시적 DENY 문은 명시적 ALLOW 문보다 우선합니다. 다음 정책에 명시적인 DENY 문이 포함되어 있지 않은지 확인하십시오.

  • IAM 자격 증명의 IAM 정책
  • Amazon S3 버킷 정책
  • VPC(Virtual Private Cloud) 엔드포인트 정책

AWS Elastic Beanstalk이 버킷을 생성할 때 정책에는 기본적으로 명시적인 DENY 문이 포함됩니다. Amazon S3 버킷을 삭제하기 전에 명시적인 DENY 문 또는 버킷 정책을 삭제합니다.

관련 정보

버킷 비우기

S3 객체 잠금 작동 방식

버킷 삭제

AWS 공식
AWS 공식업데이트됨 일 년 전