Com base nos resultados da pesquisa, parece que usar um leitor somente de encaminhamento, como o leitor Go `tar`, pode ser um desafio ao fazer upload de arquivos grandes para o Amazon S3 usando o AWS SDK for Go.
Os pontos principais são:
1. Problemas de gerenciamento de memória: o carregador S3 do AWS SDK for Go aloca e preenche buffers de blocos para o arquivo inteiro antes de carregá-los. Isso pode fazer com que o processo fique sem memória ao enviar arquivos grandes com um leitor que não suporta funções `Seek` ou `ReadAt`, como o leitor Go `tar`.
2. Intelligent Chunking: o problema do GitHub #1104 sugere que o SDK poderia ser melhorado para usar chunking mais inteligente quando lidando com leitores que não suportam `Seek` e `ReadAt`. Isso ajudaria a gerenciar melhor o uso de memória durante uploads de arquivos grandes.
3. Streaming e multipart uploads: o AWS SDK for Go oferece suporte a streaming e multipart uploads, o que pode ajudar a gerenciar o uso de memória durante uploads de arquivos grandes. No entanto, esses recursos podem não funcionar tão bem com um leitor somente de encaminhamento.
4. Soluções alternativas: os resultados da pesquisa sugerem o uso do Minio SDK ou do Google CDK, que pode ter melhor suporte para streaming de arquivos grandes para S3. Além disso, o projeto aws-s3-reader-seeker fornece uma implementação de leitor personalizada que pode lidar mais com objetos grandes do S3. eficientemente.
Em resumo, embora seja possível usar um leitor somente de encaminhamento, como o leitor Go `tar` para fazer upload de arquivos grandes para o S3 usando o AWS SDK for Go, essa pode não ser a abordagem mais eficiente ou com melhor memória. Considerar soluções alternativas ou usar os recursos de streaming e multipart upload do SDK pode ser uma opção melhor nesses casos.
Citações:[1] https://github.com/aws/aws-sdk-go/issues/1104
[2] https://github.com/nikolaydubina/aws-s3-reader/blob/master/aws_s3_reader_seeker.go
[3] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[4] https://www.linkedin.com/pulse/golang-uploading-files-aws-s3-bucket-using-pre-signed-tiago-melo
[5] https://pkg.go.dev/github.com/SnellerInc/sneller/aws/s3