Como manter arquivos na memória - transferindo arquivos entre servidores sem armazená-los localmente

Estou no processo de escrever uma ferramenta de implantação simples que precisa pegar arquivos tar do s3, extraí-los e enviá-los ao nosso servidor de teste. Eu gostaria de fazer isso sem armazenar os arquivos localmente, mantendo-os na memória.

Aqui está o meu código para baixar arquivos do s3

func s3downloadFile(downloader *s3manager.Downloader, item string) {
    localitem := strings.Replace(item, s3base, "", -1)
    os.MkdirAll(path.Dir(localitem), os.ModePerm)
    file, err := os.Create(localitem)
    if err != nil {
        exitErrorf("Unable to open file %q, %v", err)
    }

    defer file.Close()

    numBytes, err := downloader.Download(file,
        &s3.GetObjectInput{
            Bucket: aws.String(s3bucket),
            Key:    aws.String(item),
        })
    if err != nil {
        exitErrorf("Unable to download item %q, %v", item, err)
    }

    fmt.Println("Downloaded", file.Name(), numBytes, "bytes")
}

Gostaria de evitar a criação de diretórios e arquivos neste exemplo e apenas manter tudo na memória. Eu deixei de fora a etapa que extrai os arquivos do meu código. O próximo passo seria fazer o upload dos arquivos comgo-scp igual a:

// Finaly, copy the file over
// Usage: CopyFile(fileReader, remotePath, permission)

client.CopyFile(f, "/path/to/remote/file", "0655")

Minha pergunta então focaria nofile, err := os.Create(localitem) Como parte deste código, como posso manter um leitor de arquivos na memória em vez de armazenar o arquivo localmente?

questionAnswers(1)

yourAnswerToTheQuestion