io.js の fs.readFileSync を S3 と組み合わせると死ぬ - dev.jgs.me

今日は、運用してる簡単なバッチスクリプトに「挙動がバギーなんだが〜」と問い合わせをもらって調べた。すると、どうやら fs.readFileSync でこちらが想定しているファイルを取得できていないことが分かった。

ブレークダウンしていくと、一定以上のサイズのファイルが途切れて取得されていることが分かった。当該ファイルは EC2 上のサーバに S3 をマウントしていて、 s3fs 経由でファイルを参照していた。

試しにそのファイルを cp でローカルにコピーして read の権限を与えてやるとこちらが想定している通りのデータを取得することができた。まじかー。。。

たぶん s3fs の問題だろうから深入りせずに

(LiveScript)
...
execSync "cp #{s3Path} #{tmpPath}"
execSync "chmod +r #{tmpPath}"
readFileSync tmpPath
...

というアレゲな対応になってしまった...。

original: http://dev.jgs.me/2015/06/16/node-readfilesync-with-s3
#20150616 #0616

関連ページとランダムに選ばれたページ

筆者について

jigsaw(ジグソウ、1991年6月12日-)は日本のプログラマ、会社代表。本名は小林貴也(こばやし たかや)。主にウェブ、フロントエンド領域で活動している。カミング・スーン合同会社の代表社員。
さらに詳しく

寄附について

面白かったらBTCETHでの寄附をお待ちしております。
寄附のきろく