无法调用我的lambda函数

时间:2016-04-22 10:52:40

标签: node.js amazon-web-services amazon-s3 aws-lambda

我正在试图解释aws lambda的工作原理,但我不得不承认我还没有完全发现这个aws模块的实用程序。那么,据我所知,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) {
	var params = {
	  Message: 'STRING_VALUE', /* required */
	  MessageAttributes: {
	    someKey: {
	      DataType: 'raw', /* required */
	      BinaryValue: new Buffer('...') || 'STRING_VALUE',
	      StringValue: 'STRING_VALUE'
	    },
	    /* anotherKey: ... */
	  },
	  MessageStructure: 'Hello from lambda',
	  Subject: 'STRING_VALUE',
	  TargetArn: 'XXXXXXX', //my target arn
	  TopicArn: 'XXXXX' //my topic arn
	};
	async.waterfall([
			sns.publish(params, function(err, data) {
			  if (err) console.log(err, err.stack); // an error occurred
			  else     console.log(data);           // successful response
			})
		],function(error){
		if (error) throw err;
	})
	
};

任何帮助都将受到高度赞赏。感谢

2 个答案:

答案 0 :(得分:3)

要检查的事情:

答案 1 :(得分:1)

同时检查您的CloudWatch日志中是否有Lambda函数,如果它被触发,您将有一个日志条目。这也是从函数生成调试跟踪的方法,并将显示任何错误。

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