2017-03-23 2 views
1

Ich habe eine AWS-Lambda-Funktion erstellt, um PutItem in DynamoDB-Tabelle mit API-Gateway.Wie füge ich ein externes Modul in die Lambda-Funktion ein?

In der Lambda-Funktion habe ich ein Modul zum Erstellen von userId UUID hinzugefügt. Ich habe Lambda-Funktion mit Inline-Code erstellt.

Nun mein Problem ist, ich bin immer Fehler „Kann nicht Modul‚UUID‘gefunden“

weil sein ein externes Modul. Also, kann mir jemand helfen, dieses Problem zu lösen. Wie kann ich dieses Modul in meiner Lambda-Funktion hinzufügen und verwenden?

Im Folgenden meine Lambda-Funktion ist -

'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); 
     } 
    }); 

}

Hier ist die fehler-

{ 
"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

Hallo Rahul, hast du den Inline-Editor benutzt? – Ashan

+0

Ja, ich benutze Inline-Editor, also möchte ich aw-sdk, mögen, wie kann ich einen anderen Modulnamen uuid hinzufügen. –

Antwort

2

NPM Abhängigkeiten zu schließen, müssen Sie die Upload-Funktion verwenden. Dazu müssen Sie ein Verzeichnis erstellen und es mit allen Abhängigkeiten zippen.

Um diesen Prozess zu vereinfachen von DevOps Sie betrachten können serverless framework

+0

Vielen Dank für Ihre Vorschläge, Nachdem Sie mit Ihrer ersten Lösung gehen, habe ich eine Zip für mein Projekt mit dem erforderlichen Modul erstellt. Bus nach dem Hochladen, Es gibt folgenden Fehler. { "errormessage": "Kann nicht Modul finden '/ var/Aufgabe/Index'", "errortype": "Error", "stacktrace": [ „Function.Module._load (module.js: 276 : 25)“, "Module.require (module.js: 353: 17)", "(intern/module.js erfordern: 12: 17)" ] } –

+0

Hey, löste ich es selbst, Nach dem Ändern des Dateinamens - zu "index.js", Danke für Ihre Hilfe –

0

Wenn Ihr AWS Lambda Laufzeit Node.js 6.10 UUID-Modul gesetzt wird, ohne eine .zip hochladen zu müssen geladen werden. Wenn Ihre Laufzeit Node.js 4.3 ist, müssen Sie die UUID in Ihrer Zip- und Upload-Datei bündeln.

Verwandte Themen