Tworzę dokumenty PDF w pamięci jako OutputStream
s. Te powinny zostać przesłane do S3. Mój problem polega na tym, że nie można bezpośrednio utworzyć PutObjectRequest
(zgodnie z this thread in the AWS dev forum). Używam aws-java-sdk-s3
v1.10.8 w aplikacji Dropwizard.Jak przesłać Java OutputStream do AWS S3
Dwa obejścia widzę do tej pory to:
- Skopiuj
OutputStream
doInputStream
i zaakceptować fakt, że dwukrotnie ilość pamięci RAM jest używany. - Rura
OutputStream
doInputStream
i przyjmuję napowietrznej dodatkowym gwintem (patrz this answer)
Jeśli nie znajdę lepszego rozwiązania Pójdę z nr 1, bo to wygląda tak, jakbym mógł sobie pozwolić na dodatkową pamięć łatwiej niż wątki/CPU w mojej konfiguracji.
Czy istnieje jakikolwiek inny, być może skuteczniejszy sposób na osiągnięcie tego, co do tej pory przeoczyłem?
EDIT: Moi OutputStream
s są ByteArrayOutputStream
s
"Tworzę dokumenty PDF w pamięci jako OutputStreams" - ?? 'OutputStream' nie przechowuje danych (prawdopodobnie z wyjątkiem' ByteArrayOutputStream', ale wtedy powiedziałbyś, że utworzyłeś go w pamięci jako * tablica bajtów *) – immibis
Używam ByteArrayOutputStream. Przepraszam za zamieszanie. – EagleBeak
Mam podobne pytanie - http://stackoverflow.com/questions/40268320/how-to-store-object-on-s3-using-outputstream. Czy byłeś w stanie znaleźć rozwiązanie tego problemu? Jeśli nie, to w jaki sposób zrobiłeś w swojej sprawie nr 1? – Omnipresent