Ich verwende derzeit ein node.js-Plugin namens s3-upload-stream, um sehr große Dateien an Amazon S3 zu streamen. Es verwendet die mehrteilige API und funktioniert größtenteils sehr gut.
Dieses Modul zeigt jedoch sein Alter an und ich musste bereits Änderungen daran vornehmen (der Autor hat es ebenfalls abgelehnt). Heute bin ich auf ein anderes Problem mit Amazon gestoßen, und ich würde gerne die Empfehlung des Autors annehmen und anfangen, das offizielle aws-sdk zu verwenden, um meine Uploads durchzuführen.
ABER.
Das offizielle SDK scheint Piping to nicht zu unterstützen s3.upload()
. Die Natur von s3.upload ist, dass Sie den lesbaren Stream als Argument an den S3-Konstruktor übergeben müssen.
Ich habe mehr als 120 Benutzercodemodule, die verschiedene Dateiverarbeitungen durchführen, und sie sind unabhängig vom endgültigen Ziel ihrer Ausgabe. Der Motor gibt ihnen einen ableitbaren, beschreibbaren Ausgabestream und sie leiten ihn weiter. Ich kann ihnen kein AWS.S3
Objekt geben und sie bitten, es aufzurufen upload()
, ohne allen Modulen Code hinzuzufügen. Der Grund, den ich benutzte, s3-upload-stream
war, dass es Rohrleitungen unterstützte.
Gibt es eine Möglichkeit, aws-sdk zu s3.upload()
etwas zu machen , zu dem ich den Stream leiten kann?