御世話になります。
lambda で node.js を実行したいと思います。
以前こちらサイトで質問したところ、一度ローカルからnode.jsのコードを成功してからの方が質問し易いというご指摘を頂き、ローカルで以下のコードでapiの呼び出しをしました。
node.js
1var request = require('request'); 2 3//ヘッダーを定義 4var headers = { 5 'Content-Type':'application/json', 6 "Accept": "application/json" 7} 8 9//オプションを定義 10var options = { 11 url: 'https://api.soracom.io/v1/auth', 12 method: 'post', 13 headers: headers, 14 body : { 15 "email":"登録したメールアドレス", 16 "password":"登録したパスワード" 17 }, 18 json: true 19} 20 21console.log(options); 22request(options, function(error, response, body){ 23 if (!error && response.statusCode == 200) { 24 console.log(response.body); 25 console.log("apiは成功しました"); 26 } else { 27 console.log('error: '+ response.statusCode); 28 console.log(response.body); 29 console.log("apiは失敗に終わりました"); 30 } 31});
このコードを、lambdaで呼び出すには、以下の点に注意して実践しました。
自分で調べた知識ですので、もしかしたら勘違いしているかもしれません。
1:
モジュールrequestを利用しているので、モジュールと一緒にzipファイルとしてアップロードする
2:
外部モジュールとして呼び出すため、呼び出したい関数を、
exports.handler = function(event, context) {}
に入れる
実際にアップロードしたファイルの構造は以下になります。
node_module - request//node_moduleの中にrequestモジュールがファイルがあります
index.js
index.jsの中身は以下になります。
node.js
1var request = require('request'); 2 3exports.handler = function(event, context) { 4 //ヘッダーを定義 5 var headers = { 6 'Content-Type':'application/json', 7 "Accept": "application/json" 8 } 9 10 //オプションを定義 11 var options = { 12 url: 'https://api.soracom.io/v1/auth', 13 method: 'post', 14 headers: headers, 15 body : { 16 "email":"登録したメールアドレス", 17 "password":"登録したパスワード" 18 }, 19 json: true 20 } 21 22 console.log(options); 23 request(options, function(error, response, body){ 24 if (!error && response.statusCode == 200) { 25 console.log(response.body); 26 console.log("apiは成功しました"); 27 } else { 28 console.log('error: '+ response.statusCode); 29 console.log(response.body); 30 console.log("apiは失敗に終わりました"); 31 } 32 }); 33} 34
lambda側でのエラーになります。
node.js
1{ 2 "errorMessage": "Cannot find module 'extend'", 3 "errorType": "Error", 4 "stackTrace": [ 5 "Function.Module._load (module.js:276:25)", 6 "Module.require (module.js:353:17)", 7 "require (internal/module.js:12:17)", 8 "Object.<anonymous> (/var/task/node_modules/request/index.js:17:29)", 9 "Module._compile (module.js:409:26)", 10 "Object.Module._extensions..js (module.js:416:10)", 11 "Module.load (module.js:343:32)", 12 "Function.Module._load (module.js:300:12)", 13 "Module.require (module.js:353:17)" 14 ] 15}
気になる点として、zipファイルをアップロードしたときに、以下の注意メッセージが出ました。
node.js
1This function contains external libraries. Uploading a new file will override these libraries.
外部モジュールは、どのような構造で一緒に上げればよろしいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。