Cómo mantener archivos en la memoria: transferencia de archivos entre servidores sin almacenarlos localmente

Estoy en el proceso de escribir una herramienta de implementación simple que necesita tomar archivos tar de s3, extraerlos y luego subirlos a nuestro servidor provisional. Me gustaría hacer esto sin almacenar los archivos localmente, manteniéndolos en la memoria.

Aquí está mi código para descargar archivos de 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")
}

Me gustaría evitar tener que crear los directorios y archivos en este ejemplo y simplemente mantener todo en la memoria. Omití el paso que extrae los archivos de mi código. El siguiente paso sería subir los archivos con go-scp al igual que

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

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

i pregunta se centraría en lafile, err := os.Create(localitem) parte de este código, ¿cómo puedo mantener un lector de archivos en la memoria en lugar de almacenar el archivo localmente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta