[解決済み] s3.upload()にストリームをパイプする
質問
現在、node.jsのプラグインである s3-アップロードストリーム という node.js プラグインを使用して、非常に大きなファイルを Amazon S3 にストリーミングしています。これは、マルチパート API を使用し、ほとんどの場合、非常にうまく動作します。
しかし、このモジュールは古くなってきており、私はすでに修正を加えなければなりませんでした (作者はこのモジュールを非推奨としました)。 今日、私は Amazon で別の問題にぶつかり、著者の推奨に従って、私のアップロードを達成するために公式の aws-sdk を使用し始めたいと思います。
BUT。
へのパイピングは公式SDKではサポートされていないようです。
s3.upload()
. s3.uploadの性質上、S3コンストラクタの引数として読み込み可能なストリームを渡さなければなりません。
私は、さまざまなファイル処理を行うおよそ120以上のユーザーコードモジュールを持っており、それらの出力の最終的な宛先については不可知論者である。エンジンは彼らにパイプ可能な書き込み可能な出力ストリームを渡し、彼らはそれにパイプします。 私は彼らに
AWS.S3
オブジェクトを渡して
upload()
を呼び出すように依頼します。 私が使った理由は
s3-upload-stream
を使ったのは、それがパイピングをサポートしていたからです。
aws-sdkを
s3.upload()
にストリームをパイプできるような方法はありますか?
どのように解決するのですか?
S3をラップする
upload()
関数をnode.jsの
stream.PassThrough()
ストリームを使用します。
以下はその例です。
inputStream
.pipe(uploadFromStream(s3));
function uploadFromStream(s3) {
var pass = new stream.PassThrough();
var params = {Bucket: BUCKET, Key: KEY, Body: pass};
s3.upload(params, function(err, data) {
console.log(err, data);
});
return pass;
}
関連
-
[解決済み】"npm update -g" の後に "Cannot find module 'npmlog'" というエラーが発生する。
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?