2017-10-17 202 views

回答

0

NOTE:這些代碼片段可能需要您在您的側面進行更改以使其運行。

您將需要實現以下方法:

//EmptyBucket empties the Amazon S3 bucket 
    func (s awsS3) EmptyBucket(bucket string) error { 
     log.Info("removing objects from S3 bucket : ", bucket) 
     params := &s3.ListObjectsInput{ 
      Bucket: aws.String(bucket), 
     } 
     for { 
      //Requesting for batch of objects from s3 bucket 
      objects, err := s.Client.ListObjects(params) 
      if err != nil { 
       return err 
      } 
      //Checks if the bucket is already empty 
      if len((*objects).Contents) == 0 { 
       log.Info("Bucket is already empty") 
       return nil 
      } 
      log.Info("First object in batch | ", *(objects.Contents[0].Key)) 

      //creating an array of pointers of ObjectIdentifier 
      objectsToDelete := make([]*s3.ObjectIdentifier, 0, 1000) 
      for _, object := range (*objects).Contents { 
       obj := s3.ObjectIdentifier{ 
        Key: object.Key, 
       } 
       objectsToDelete = append(objectsToDelete, &obj) 
      } 
      //Creating JSON payload for bulk delete 
      deleteArray := s3.Delete{Objects: objectsToDelete} 
      deleteParams := &s3.DeleteObjectsInput{ 
       Bucket: aws.String(bucket), 
       Delete: &deleteArray, 
      } 
      //Running the Bulk delete job (limit 1000) 
      _, err = s.Client.DeleteObjects(deleteParams) 
      if err != nil { 
       return err 
      } 
      if *(*objects).IsTruncated { //if there are more objects in the bucket, IsTruncated = true 
       params.Marker = (*deleteParams).Delete.Objects[len((*deleteParams).Delete.Objects)-1].Key 
       log.Info("Requesting next batch | ", *(params.Marker)) 
      } else { //if all objects in the bucket have been cleaned up. 
       break 
      } 
     } 
     log.Info("Emptied S3 bucket : ", bucket) 
     return nil 
    } 

UPDATE:AWS SDK爲GO的最新版本已經解決了這個問題之前,我有。

+0

您是否在sdk中提出了恐慌問題?你用'ListObjectsV2'試過了當前的api嗎? – JimB

+0

不,我還沒有提出恐慌的問題。我計劃在這個週末做這件事。是的,這個問題出現在使用當前的API中。 – SKRelan

0

適用於Go的AWS開發工具包具有Amazon S3批處理抽象。看看here

相關問題