2017-03-23 29 views
1

我已经创建了一个AWS Lambda函数,用API Gateway将它放入dynamoDB表中。如何在aws lambda函数中添加外部模块?

在lambda函数中,我添加了一个用于创建userId UUID的模块。我用内联代码创建了Lambda函数。

现在我的问题是我得到的错误,“无法找到模块‘UUID’”

,因为它的一个外部模块。 那么,谁能帮我找出这个问题。 我如何在lambda函数中添加此模块并使用它?

下面是我的lambda函数 -

'use strict'; 
const uuid = require('uuid'); 
var AWS = require('aws-sdk'); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = function(event, context) { 

    var tableName = "SiplAwsAPI_users"; 
    var datetime = new Date().getTime().toString(); 

    dynamodb.putItem({ 
     "TableName": tableName, 
     "Item": { 
      "userId": {"S": uuid.v1()}, 
      "timedate": {"S": datetime}, 
      "userName": {"S": event.userName}, 
      "userPassword": {"S": event.userPassword}, 
     } 
    }, function(err, data) { 
     if (err) { 
      var response= {"response":"false",              "message":JSON.stringify(err.message, null, ' '),"data":JSON.stringify(err.statusCode, null, ' ')}; 
      context.succeed(response); 
     } else { 
      //console.log('Dynamo Success: ' + JSON.stringify(data, null, ' ')); 
      var response= {"response":"true", "message":"Register Successfully","data":JSON.stringify(data, null, ' ')}; 
      context.succeed(response); 
     } 
    }); 

}

这里是无错误

{ 
"errorMessage": "Cannot find module 'uuid'", 
"errorType": "Error", 
"stackTrace": [ 
"Function.Module._load (module.js:276:25)", 
"Module.require (module.js:353:17)", 
"require (internal/module.js:12:17)", 
"Object.<anonymous> (/var/task/index.js:3:14)", 
"Module._compile (module.js:409:26)", 
"Object.Module._extensions..js (module.js:416:10)", 
"Module.load (module.js:343:32)", 
"Function.Module._load (module.js:300:12)", 
"Module.require (module.js:353:17)" 
] 
} 
+0

嗨拉胡尔,你使用内联编辑器吗? – Ashan

+0

是的,我正在使用内联编辑器,所以我想要像aw-sdk, 我怎样才能添加另一个模块名称uuid。 –

回答

2

要包括NPM的依赖关系,你需要使用上传功能。为此,您需要创建一个目录并将其与包含的所有依赖关系一起压缩。

为了简化的DevOps的过程。如果您的AWS LAMBDA运行时设置为6.10的Node.js,你可以考虑使用serverless framework

+0

感谢您的建议, 完成第一个解决方案后,我用我的模块为我的项目创建了一个zip。上传之后的总线, 它给出以下错误。 { “的errorMessage”: “无法找到模块 '的/ var /任务/指数'”, “ERRORTYPE”: “错误”, “堆栈跟踪”: “Function.Module._load(module.js:276 :25)”, “Module.require(module.js:353:17)”, “需要(内部/ module.js:12:17)” ] } –

+0

嗨,解决了它自己, 将文件名更改为“index.js”后,感谢您的帮助 –

0

,UUID模块,而无需上传一个.zip加载。如果您的运行时为Node.js 4.3,则必须将uuid捆绑到您的zip中并上传。