我正在试图解释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;
})
};
任何帮助都将受到高度赞赏。感谢
答案 0 :(得分:3)
要检查的事情:
waterfall
:http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-deployment-pkg.html 答案 1 :(得分:1)
同时检查您的CloudWatch日志中是否有Lambda函数,如果它被触发,您将有一个日志条目。这也是从函数生成调试跟踪的方法,并将显示任何错误。
我正在用Java开发,所以无服务器对我没有帮助,但作为Node开发人员,您可能也会发现这组工具很有用。 https://github.com/serverless/serverless