2016-04-22 96 views
0

我试图unterstand aws lambda如何工作,但我不得不承认,我还没有完全捕获这个aws模块的实用程序。那么,从我所知道的lambda允许在预先指定的事件之后启动脚本?好吧,所以我试图建立一个简单的案例几天。不能调用我的lambda函数

当我从S3上传或删除某些东西时,我希望我的lambda函数通过使用SNS向我发送推送通知。不幸的是,我无法完成这项工作。我不知道如何继续。我遵循AWS入门教程表单lambda,我配置了角色和所有这些东西,然后我创建了一个node.js函数(部署函数),安装了依赖关系并压缩了所有这些东西,然后将其上传到Aws lambda。

我也在aws S3中配置了事件,但是当我从S3上传或删除一个文件时,我从未收到任何推送通知。我只想知道测试AWS Lambda的最简单方法,因为即使是亚马逊样本测试lambda函数(S3上传图像,调整大小并复制到另一个存储桶)在我测试时也不起作用。

这里是我想要得到它的工作原理

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

任何帮助将得到高度赞赏的代码。由于

回答

1

还要检查你的CloudWatch日志lambda函数,如果被触发的时候你就会有一个日志条目。这也是您从函数中生成调试跟踪的方式,并且会显示任何错误。

我正在用Java开发,所以无服务器对我没有任何帮助,但作为一个Node开发者,您可能也会发现这套工具很有用。 https://github.com/serverless/serverless