はじめに
AWS Lambdaではnode_moduleを利用する場合は、モジュールをzip化してアップロードする必要があります。
しかし、一部のモジュールはLambdaで標準的に提供されています。
そこでAWS Lambdaで標準利用できるモジュールを調べて見ました。
npmコマンドでの調査
とりあえず、npmコマンドでモジュール一覧を取得してみようとしましたが
残念ながらnpmコマンドにはパスが届いておらず実行できませんでした。
index.js
var exec = require('child_process').exec;
exports.handler = function(event, context){
exec('npm list', function(err, stdout, stderr){
console.log(stdout);
context.done(err, stdout);
});
};
stdout
{
"errorMessage": "Command failed: /bin/sh: npm: command not found\n",
"errorType": "Error",
"stackTrace": [
"",
"ChildProcess.exithandler (child_process.js:658:15)",
"ChildProcess.emit (events.js:98:17)",
"maybeClose (child_process.js:766:16)",
"Socket.<anonymous> (child_process.js:979:11)",
"Socket.emit (events.js:95:17)",
"Pipe.close (net.js:466:12)"
]
}
lsコマンドでの調査
次にlsコマンドで調べて見ました。
node_modulesフォルダは/usr/libにあったので、その中を確認してみました。
index.js
var exec = require('child_process').exec;
exports.handler = function(event, context){
exec('ls /usr/lib/node_modules', function(err, stdout, stderr){
console.log(stdout);
context.done(err, stdout);
});
};
そしたら、なんとビックリ空っぽでした。どんなモジュールがあるかは秘密なんですね。
requireで調査
そこでrequireを入れて見てシコシコと少しずつ確認していきました。
2016年2月13日現在、以下のモジュールがインストールしているのがわかりました。
余りインストールされているものは多くはないですが、aws-sdkが標準ではいっているので
Lambdaを使って、AWS環境を設定したいというニーズには対応できそうです。
auroraをRDSで採用したので、ぜひともmysqlモジュールは入れて欲しいですね。
あ、あとoauth。
インストールされているもの
- aws-sdk
- child_process
- crypto (2016.3.19 added)
- fs
- http
- https
- os (2016.10.16 added)
- querystring (2016.3.7 added)
- sax (aws-sdk/node_modules/sax)
- xml2js (aws-sdk/node_modules/xml2js)
- xmlbuilder (aws-sdk/node_modules/xmlbuilder)
インストールされていないもの
- express
- gulp
- mysql
- npm
- oauth