【问题标题】:How to convert aws.WriteAtBuffer to an io.Reader?如何将 aws.WriteAtBuffer 转换为 io.Reader?
【发布时间】:2019-10-29 03:28:38
【问题描述】:

我需要从 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,
})

我使用了 aws.WriteAtBuffer,按照这里的答案:https://stackoverflow.com/a/48254996/504055

但是,我目前被困在如何将此缓冲区视为实现 io.Reader 接口的东西,这是上传者的 Upload 方法所需要的。

【问题讨论】:

    标签: go amazon-s3


    【解决方案1】:

    使用bytes.NewReaderbytes in the buffer上创建一个io.Reader:

    result, err := uploader.Upload(&s3manager.UploadInput{
        Bucket: aws.String(targetS3Bucket),
        Key:    aws.String(documentKey),
        Body:   bytes.NewReader(buffer.Bytes()),
    })
    

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 2020-08-22
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多