AWS Lambdaでnpm installを実行する

かなり限られたユースケースな気がするけど、後輩にやり方を尋ねられたのでいろいろ実験してみた。AWS Lambda(以下lambda)をnode4.3環境で動かす時はもちろんnpmが最初から入っている。npm -vとかはそのまま動くんだけど、lambdaの仕様上/tmp以外のディレクトリは全てRead-onlyになっているためnpm installは動かない。これは、このコマンドが/home以下にいろんなファイルを作ろうとしてしまうからだ。

ググってみると同じ問題で困っている人が何人かいるようだった。

Install NPM packages on read-only file systems · Issue #12418 · npm/npm

.npmrcを書き換えたりすればイケるかな、とも思ったけど、そもそも/tmp以外全部いじれない。なので単純に$HOMEを変更して対処した。

export HOME='/tmp' && npm install *** --prefix='/tmp'

lambdaみたいなエフェメラルな環境であれば環境変数を好きに弄っても問題ない。最初から入っているnpmを使うのならこれでいいんじゃないかな。