不能调用我的lambda函数
问题描述:
我试图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
};
任何帮助将得到高度赞赏的代码。由于
答
几件事情要检查:
- 你订阅的SNS话题? SNS只是一个通知,因此您需要订阅该主题以获取通知,例如电子邮件订阅。 Google文档:http://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html
- 您是否设置了事件源映射?文档:http://docs.aws.amazon.com/lambda/latest/dg/intro-core-components.html
- 检查你使用正确
waterfall
:http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html
答
还要检查你的CloudWatch日志lambda函数,如果被触发的时候你就会有一个日志条目。这也是您从函数中生成调试跟踪的方式,并且会显示任何错误。
我正在用Java开发,所以无服务器对我没有任何帮助,但作为一个Node开发者,您可能也会发现这套工具很有用。 https://github.com/serverless/serverless