【发布时间】:2018-04-30 06:44:03
【问题描述】:
我想知道如何在同一个存储桶中移动目录。 使用 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 中实现移动目录,并且 mv 在 aws-cli-s3 中也可用
提前致谢,
【问题讨论】:
-
我不认为 S3 APi 提供“文件夹”移动,因为 S3 实际上没有文件夹,它只有键可以具有 看起来像的前缀目录路径。 AWS CLI 可能通过复制和删除来模拟“文件夹移动”。
标签: go amazon-s3 aws-sdk-go