我创建了一个AWS Lambda函数,将putItem放在带有API网关的dynamoDB表中。
在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 :(得分:2)
要包含NPM依赖项,您需要使用上传功能。为此,您需要创建一个目录并使用所有依赖项对其进行压缩。
要简化devOps的此过程,您可以考虑使用serverless framework
答案 1 :(得分:1)
上面的代码可以在Node.js 8.10中工作,而无需上传模块。
const uuidv4 = require('uuid/v4');
var userId = uuidv4();
答案 2 :(得分:0)
如果您的AWS Lambda运行时设置为Node.js 6.10,则无需上载.zip即可加载uuid模块。如果你的运行时是Node.js 4.3,你必须在你的zip中捆绑uuid并上传。