2012-08-03 5 views
1

S3 버킷을 삭제하는 더 나은 방법을 찾고 있습니다.
.Net 용 AWS SDK는 비어 있지 않은 버킷을 삭제하는 것을 허용하지 않으며
에는 버킷의 하위 개체를 삭제하기 위해 오버플로 된 DeleteBucket()이 없습니다. S3에서 버킷 삭제

  • //에있는 모든 개체를 삭제하는 객체

  • 삭제 버킷을 삭제

    • 이 양동이에 모든 개체를 검색 -

      내가 현재 양동이를 삭제하고있는 방법입니다 버킷 먼저 - 비어 있지 않은 버킷을 삭제할 수 없음

      using (ListObjectsResponse response = amazonS3Client.ListObjects(new ListObjectsRequest().WithBucketName(bucket.Name))) 
      { 
          if (response.S3Objects.Count > 0) 
          { 
           List<KeyVersion> keys = response.S3Objects.Select(obj => new KeyVersion(obj.Key)).ToList(); 
           DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest 
           { 
            BucketName = bucket.Name, 
            Keys = keys 
           }; 
           amazonS3Client.DeleteObjects(deleteObjectsRequest); 
          } 
      } 
      
      //Delete Bucket 
      DeleteBucketRequest request = new DeleteBucketRequest 
      { 
          BucketName = bucket.Name 
      }; 
      amazonS3Client.DeleteBucket(request); 
      

      S3에서 버킷을 삭제하는 더 좋은 방법은 없습니다. 먼저 개체를 가져올 필요가 없습니다.
      .Net 용 AWS SDK에 누락 된 메소드가 있습니까?

      감사합니다.

  • 답변

    1

    나는 그것이 가능하지 않다고 생각한다. 심지어 자신의 REST API는 비어 있지 않은 버켓 삭제 지원 :

    는 DELETE 작업이 구현 버킷
    설명
    삭제는 URI에 명명 된 버킷을 삭제합니다. 버킷에있는 모든 객체 (모든 객체 버전 및 삭제 표시 자 포함)는 버킷 자체를 삭제하기 전에 삭제해야합니다.

    (from S3 REST API).

    여러 개체 삭제 요청을 호출하여 올바른 방법으로 작업하고 있습니다. 버전 버킷을 사용하는 경우 버킷을 삭제하기 전에 모든 버전의 모든 객체를 삭제해야합니다.

    0

    API없이 바로 수행하는 것이 더 쉽습니다.

    • 은 삭제 및 속성에서 "라이프 사이클"가고 싶은 버킷 선택 : S3 관리 콘솔을 사용하여 "라이프 사이클"설정을 사용하여 S3 양동이를 삭제하는 아주 쉬운 방법이있다.

    • 은 "액션 객체의"풀다운에서 오른쪽 아래

    • 에서 "구성 규칙"버튼을 클릭하고 "전체 버킷"

    • 에 적용 할 새 규칙을 설정 새 규칙을 추가 "영구 삭제"를 선택하십시오.

    • 일 수를 "1"로 설정하십시오. 완료되었습니다. 버킷은 24 시간 후에 사라질 것입니다.