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

4분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷을 삭제할 수 없는 이유를 해결하고 싶습니다.

해결 방법

사전 요구 사항

Amazon S3 버킷을 삭제하기 전에 다음 작업을 수행하십시오.

  • 정적 웹 사이트로 호스팅하는 버킷의 경우 해당 버킷과 관련된 Amazon Route 53 호스팅 영역 설정을 검토 및 업데이트합니다.
  • 버킷이 Elastic Load Balancing(ELB)으로부터 로그 데이터를 수신한 경우 버킷을 삭제하기 전에 버킷에 대한 로그 전송을 중지합니다.

참고: 버킷 이름을 삭제하면 모든 사용자가 해당 이름을 사용할 수 있습니다. 다른 AWS 계정이 버킷 이름을 사용하는 경우 해당 버킷 이름을 재사용할 수 없습니다. 버킷을 삭제하지 않는 것이 가장 좋습니다. 대신 비워 두십시오.

S3 버킷이 비어 있지 않음

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

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

버전 관리를 사용하여 구성했거나 일시 중단됨 상태인 버킷의 경우 수명 주기 구성에 다음 규칙을 포함하십시오.

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

버전 관리를 사용하여 구성하지 않은 버킷의 경우 수명 주기 구성에 다음 규칙을 포함하십시오.

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

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

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

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}}')"

참고: bucket-name을 Amazon S3 버킷 이름으로 바꾸십시오.

Amazon S3 콘솔 사용

다음 단계를 완료하십시오.

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

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

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

액세스 포인트가 버킷과 연결되어 있음

Amazon S3 버킷을 삭제하기 전에 버킷에 연결된 모든 액세스 포인트를 삭제합니다. 동일한 계정 내에 S3 액세스 포인트 또는 다중 리전 액세스 포인트가 연결된 버킷은 삭제할 수 없습니다.

IAM 자격 증명에 충분한 권한이 없음

버킷을 삭제하는 데 사용하는 IAM 자격 증명에 대한 IAM 정책에서 DeleteBucket 권한을 부여합니다. 또는 버킷 정책에 delete-bucket API 작업을 포함합니다.

명시적 DENY 문이 삭제를 방지함

명시적 DENY 문은 명시적 ALLOW 문보다 우선합니다. IAM 자격 증명, 버킷 및 가상 프라이빗 클라우드(VPC) 정책에 명시적 DENY 문이 포함되어 있지 않은지 확인합니다.

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

AWS 공식
AWS 공식업데이트됨 4달 전