2016-04-22 14 views
0

Ich versuche zu verstehen, wie aws Lambda funktioniert, aber ich muss zugeben, dass ich den Nutzen dieses aws-Moduls nicht vollständig verstanden habe. Also, von dem, was ich weiß lambda erlauben, ein Skript nach einem Ereignis im Voraus zu starten? Ok, ich versuche seit ein paar Tagen einen einfachen Fall zu bauen.Kann meine Lambda-Funktion nicht aufrufen

Wenn ich etwas von S3 hochlade oder lösche, möchte ich, dass meine Lambda-Funktion mir eine Push-Benachrichtigung sendet, indem ich SNS benutze. Leider kann ich diese Arbeit nicht bekommen. Ich weiß nicht, wie ich vorgehen soll. Ich folgte dem AWS-Start-Tutorial-Formular Lambda, konfigurierte Rollen und all diese Sachen, dann erstelle ich eine node.js-Funktion (Deployment-Funktion), installierte Abhängigkeiten und gezippt all diese Sachen und lade diese dann zu Aws Lambda hoch.

Ich habe auch das Ereignis in aws S3 konfiguriert, aber wenn ich eine Datei von S3 hochladen oder löschen, habe ich nie eine Push-Benachrichtigung erhalten. Ich möchte nur den einfachsten Weg zum Testen von AWS Lambda wissen, denn selbst die amazon Sample Test Lambda-Funktion (S3 upload image, Größe ändern und in einen anderen Bucket kopieren) funktioniert nicht, wenn ich es teste.

Hier ist der Code ich versuche, es zu bekommen funktioniert wird

var async = require('async'); 
 
var AWS = require('aws-sdk'); 
 

 

 
// get reference to S3 client 
 
var s3 = new AWS.S3(); 
 
var sns = new AWS.SNS(); 
 

 
exports.handler = function(event, context, callback) { 
 
\t var params = { 
 
\t Message: 'STRING_VALUE', /* required */ 
 
\t MessageAttributes: { 
 
\t  someKey: { 
 
\t  DataType: 'raw', /* required */ 
 
\t  BinaryValue: new Buffer('...') || 'STRING_VALUE', 
 
\t  StringValue: 'STRING_VALUE' 
 
\t  }, 
 
\t  /* anotherKey: ... */ 
 
\t }, 
 
\t MessageStructure: 'Hello from lambda', 
 
\t Subject: 'STRING_VALUE', 
 
\t TargetArn: 'XXXXXXX', //my target arn 
 
\t TopicArn: 'XXXXX' //my topic arn 
 
\t }; 
 
\t async.waterfall([ 
 
\t \t \t sns.publish(params, function(err, data) { 
 
\t \t \t if (err) console.log(err, err.stack); // an error occurred 
 
\t \t \t else  console.log(data);   // successful response 
 
\t \t \t }) 
 
\t \t ],function(error){ 
 
\t \t if (error) throw err; 
 
\t }) 
 
\t 
 
};

Jede Hilfe sehr geschätzt. Dank

Antwort

3

Paar Dinge zu überprüfen:

1

Auch Ihre Cloudwatch-Protokolle für die Lambda-Funktion überprüfen, wenn es Sie einen Protokolleintrag haben ausgelöst wird. Dies ist auch Ihre Art, einen Debug-Trace von Ihrer Funktion zu erstellen und eventuelle Fehler anzuzeigen.

Ich entwickle in Java, also Serverless ist keine Hilfe für mich, aber als Node-Entwickler könnten Sie auch diese Reihe von Tools nützlich finden. https://github.com/serverless/serverless

Verwandte Themen