Beispiel #1
0
func deleteObjects(bucket string, objs []Obj, wg *sync.WaitGroup, S3 *s3.S3) {
	maxLen := 1000

	for i := 0; i < len(objs); i += maxLen {
		high := i + maxLen
		if high > len(objs) {
			high = len(objs)
		}

		objects := []*s3.ObjectIdentifier{}
		for _, obj := range objs[i:high] {
			objects = append(objects, &s3.ObjectIdentifier{Key: aws.String(obj.key), VersionId: aws.String(obj.id)})
		}

		_, err := S3.DeleteObjects(&s3.DeleteObjectsInput{
			Bucket: aws.String(bucket),
			Delete: &s3.Delete{
				Objects: objects,
			},
		})
		if err != nil {
			fmt.Printf("Failed: %s\n", err)
		}

		wg.Add(-len(objects))
	}

	return
}
Beispiel #2
0
func s3Delete(svc *s3.S3, bucket string, keys []*s3.ObjectIdentifier) *s3.DeleteObjectsOutput {
	params := &s3.DeleteObjectsInput{
		Bucket: aws.String(bucket),
		Delete: &s3.Delete{Objects: keys},
	}
	result, err := svc.DeleteObjects(params)
	if err != nil {
		log.Printf("Error deleting from s3: %v", err)
	}
	return result
}
Beispiel #3
0
// DeleteS3Objects deletes the objects specified by the given object keys
func DeleteS3Objects(client *s3.S3, bucket string, objKeys []string) (*s3.DeleteObjectsOutput, error) {
	logger.Debug("DeleteS3Objects: ", bucket, "-", objKeys)
	s3Ids := make([]*s3.ObjectIdentifier, len(objKeys))
	for i, key := range objKeys {
		s3Ids[i] = &s3.ObjectIdentifier{Key: aws.String(key)}
	}

	params := &s3.DeleteObjectsInput{
		Bucket: aws.String(bucket), // Required
		Delete: &s3.Delete{ // Required
			Objects: s3Ids,
			Quiet:   aws.Bool(true),
		},
		// MFA:          aws.String("MFA"),
		// RequestPayer: aws.String("RequestPayer"),
	}

	return client.DeleteObjects(params)
}