AWS S3-如何递归删除对象[GoLang]

时间:2019-06-12 14:38:27

标签: amazon-web-services go amazon-s3

我想从S3存储桶的指定路径中删除所有.JPEG文件。例如,假设我在S3云服务上具有类似于以下内容的结构:

Obj1/
   Obj2/
      Obj3/
         image_1.jpeg
         ...
         image_N.jpeg

是否可以将Obj1/Obj2/Obj3指定为DeleteObjectsInput's prefix并递归删除所有包含此类.JPEG的{​​{1}}文件。

这是我的代码:

prefix

func (s3Obj S3) Delete() error { sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String(s3Obj.Region), })) svc := s3.New(sess) input := &s3.DeleteObjectsInput{ Bucket: aws.String(s3Obj.Bucket), Delete: &s3.Delete{ Objects: []*s3.ObjectIdentifier{ { Key: aws.String(s3Obj.ItemPath), }, }, Quiet: aws.Bool(false), }, } result, err := svc.DeleteObjects(input) if err != nil { if aerr, ok := err.(awserr.Error); ok { switch aerr.Code() { default: glog.Errorf("Error occurred while trying to delete object from S3. Error message - %v", aerr.Error()) } } else { glog.Errorf("Error occurred while trying to delete object from S3. Error message - %v", err.Error()) } return err } glog.Info(result) return nil } 代表上述示例中的sObj3.ItemPath路径。由于此功能,我没有得到任何错误。我实际上收到以下消息:

Obj1/Obj2/Obj3

但是当我检查我的S3云服务时,什么也没做。我在做什么错了?

编辑

我已经更改了代码,因此我的Delete函数接受了列出Deleted: [{ Key: "Obj1/Obj2/Obj3" }] 的对象的列表。该列表中大约有50个.JPEG文件,出于某种原因,代码遵循仅删除最后一个。我不确定为什么。

s3.ObjectIdentifier

0 个答案:

没有答案