aws-sdk-go s3在bucket之间移动目录

时间:2017-11-16 16:23:16

标签: go amazon-s3 aws-sdk-go

我想知道如何在同一个存储桶中移动目录。 使用CopyObject而不是目录在同一个桶中移动一个特定文件我没有任何问题

这是运行下面代码后的错误。

Unable to copy item from bucket "bucketName" to bucket "bucketName", NoSuchKey: The specified key does not exist.

dir := "newPlace/directory"
source := bucket + "/directory"

// Copy the item
_, err = svc.CopyObject(&s3.CopyObjectInput{Bucket: aws.String(bucket), CopySource: aws.String(source), Key: aws.String(dir)})
if err != nil {
    exitErrorf("Unable to copy item from bucket %q to bucket %q, %v", bucket, bucket, err)
}

//Wait to see if the item got copied
err = svc.WaitUntilObjectExists(&s3.HeadObjectInput{Bucket: aws.String(bucket), Key: aws.String(dir)})
if err != nil {
    exitErrorf("Error occurred while waiting for item %q to be copied to bucket %q, %v", bucket, item, bucket, err)
}

fmt.Printf("Item %q successfully copied from bucket %q to bucket %q\n", item, bucket, bucket)

我的最后一个解决方案是从我的目录中复制+删除每个文件,但我很惊讶他们没有在SDK中实现移动目录,并且aws-cli-s3中也提供了mv

提前致谢,

1 个答案:

答案 0 :(得分:0)

SDK确实支持批量操作。这应该允许您使用batch download iterator并编写自己的iterator for upload