我需要从 S3 下载一个文件,然后将相同的文件上传到不同的 S3 存储桶中。到目前为止,我有:
sess := session.Must(session.NewSession())
downloader := s3manager.NewDownloader(sess)
buffer := aws.NewWriteAtBuffer([]byte{})
n, err := downloader.Download(buffer, &s3.GetObjectInput{
Bucket: aws.String(sourceS3Bucket),
Key: aws.String(documentKey),
})
uploader := s3manager.NewUploader(sess)
result, err := uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(targetS3Bucket),
Key: aws.String(documentKey),
Body: buffer,
})
Run Code Online (Sandbox Code Playgroud)
我使用了 aws.WriteAtBuffer,根据这里的答案:https ://stackoverflow.com/a/48254996/504055
但是,我目前坚持如何将此缓冲区视为实现 io.Reader 接口的东西,这是上传者的 Upload 方法所需要的。
使用bytes.NewReader在缓冲区中的字节上创建一个 io.Reader :
result, err := uploader.Upload(&s3manager.UploadInput{
Bucket: aws.String(targetS3Bucket),
Key: aws.String(documentKey),
Body: bytes.NewReader(buffer.Bytes()),
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |