spawnSync /bin/sh ENOBUFS
Node.jsで execSync
を用いて外部コマンド(s3 sync)を実行するようにした。
import { execSync } from 'child_process'
const output = execSync('/opt/awscli/aws s3 sync xxx yyy')
console.log(output.toString())
sync結果を受け取りconsole.logでログに残すようにしたところ、↓のエラーが発生した。
spawnSync /bin/sh ENOBUFS
標準出力のバッファ上限に達したためエラーが発生した模様。
ログを残すのは必須ではなかったので、下記記事を参考にexecSyncの第二引数に { stdio: 'ignore' }
を追加しログ出力を無効化したところエラーは出なくなった。
import { execSync } from 'child_process'
execSync('/opt/awscli/aws s3 sync xxx yyy', { stdio: 'ignore' })
ログを残す必要がある場合は第二引数に{ maxBuffer: 2048 * 1024 }
を指定してバッファ上限(デフォルトは1024 * 1024)を増やす方法が使えそう。