go - aws-sdk-go s3 在存储桶之间移动目录

标签 go amazon-s3 aws-sdk-go

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

这是我在运行下面的代码后遇到的错误。

无法将项目从存储桶“bucketName”复制到存储桶“bucketName”,NoSuchKey:指定的键不存在。

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

提前致谢

最佳答案

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

关于go - aws-sdk-go s3 在存储桶之间移动目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334556/

相关文章:

go - 如何在 erlang 或 elixir 中生成 n-k light-process?

go - 如何使用 compress/gzip 和 archive/tar 创建压缩的 tar 文件?

amazon-web-services - 从单个 S3 存储桶通过 AWS CloudFront 为 SPA Multi-Tenancy 提供服务

amazon-web-services - 去 AWS 开发工具包 "Unable to determine service/operation name to be authorized"

amazon-web-services - 如何克服 ResourceNotFoundException : Requested resource not found error in Go lang?

go - for-range 中引用值的棘手案例

goroutine 阻塞了另一个

amazon-s3 - Zappa 打包 lambda 错误 ..botocore.exceptions.SSLError : SSL validation failed for <s3 file> [Errno 2] No such file or directory

ruby-on-rails - 在上传到 S3 之前,如何在服务器上将文件验证为图像?

go - 如何让 dep ensure 删除未使用的 Go 文件、依赖项或包