func()

in scripts/go/curconvert/curconvert.go [503:545]


func (c *CurConvert) CleanCur() error {

	// init S3 manager
	s3up, err := c.initS3Uploader(c.destBucket, c.destArn, c.destExternalID)
	if err != nil {
		return err
	}

	// List all objects in current parquet destination path
	result, err := s3up.S3.ListObjectsV2(
		&s3.ListObjectsV2Input{
			Bucket:  aws.String(c.destBucket),
			Prefix:  aws.String(c.destObject + "/"),
			MaxKeys: aws.Int64(500),
		})
	if err != nil {
		return fmt.Errorf("Error listing oject list when cleaning CUR: %s", err.Error())
	}

	// Build delete list of all objects not in c.CurParqetFiles map i.e. have not been uploaded on this conversion.
	var deleteObjects []s3manager.BatchDeleteObject
	for object := range result.Contents {
		_, ok := c.CurParqetFiles[*result.Contents[object].Key]
		if !ok {
			deleteObjects = append(deleteObjects, s3manager.BatchDeleteObject{
				Object: &s3.DeleteObjectInput{
					Key:    aws.String(*result.Contents[object].Key),
					Bucket: aws.String(c.destBucket),
				},
			})
		}
	}

	// Proccess object delection / cleanup
	batcher := s3manager.NewBatchDeleteWithClient(s3up.S3)
	err = batcher.Delete(aws.BackgroundContext(), &s3manager.DeleteObjectsIterator{
		Objects: deleteObjects,
	})
	if err != nil {
		return fmt.Errorf("Error deleting objects when cleaning CUR: %s", err.Error())
	}
	return nil
}