我已经搜索了整个网络,但没有找到如何使此功能获得成功的解决方案.需要帮助.
我的要求是:如果我触发一个用node.js编写的aws lambda函数并且使用aws-serverless-express模块必须快速将响应发送回API网关但我仍然不应该退出并仍然在后端运行我想要一个可以看到云监视日志.它必须是异步的.
代码段是:
app.get('/check', function(req, res){
method.invoke(req)
res.status(200).send('success')
})
Run Code Online (Sandbox Code Playgroud)
我做了这样的检查,但是lambda函数被停止并返回对api网关的响应,它甚至没有在后端运行method.invoke()函数.
如果我理解或做错了,请纠正我.我查看了此链接:调用AWS Lambda并异步返回API网关响应
这是解决这个问题的唯一方法吗?创建两个lambda函数.
我是aws的新手,只是通过一些youtube教程开始使用aws lambda,并且能够在Web编辑器本身上成功编写aws lambda函数.
但我尝试从我的本地系统上传zip文件,其中我编写了一个使用模块"fs"和"fill-pdf"的node.js代码.但是当我试图运行代码时,它给了我错误.
"错误":找不到模块"/ var/task/index".我通过互联网搜索并找到了一些链接,如:https: //github.com/lob/lambda-pdftk-example 我试过这个,但它也显示了同样的错误.
这是我的代码:
var index = require('index');
var fillPdf = require("fill-pdf");
var fs = require('fs');
var formDate = {
'Employee Name': 'MyName',
'Company Name': 'ComapnyName'
};
var pdfTemplatePath = "my.pdf";
fillPdf.generatePdf(formDate, pdfTemplatePath, function(err,
output) {
if ( !err ) {
fs.writeFile('message.pdf', output, function (err) {
if (err) throw err;
console.log('It\'s saved! in same location.');
});
}
});
Run Code Online (Sandbox Code Playgroud)
问题是我不知道这个错误即将发生的原因.谢谢你的帮助.
从过去 3 天开始,我陷入了同样的签名问题。我不明白如何摆脱这种情况。
我正在尝试通过以下方式获取预先签名的网址:
s3.getSignedUrl('putObject',
event.pre_signed_url =
{Bucket:config.awsBucket,Key:event.filename}
); in Node js.
Run Code Online (Sandbox Code Playgroud)
我使用这个预先签名的 url 上传 s3 存储桶中的图像文件:
request({
method:'PUT',
url: event.pre_signed_url,
ContentType: 'image/png',
body: fs.createReadStream('./image.png')}
, function(err, res, body)
{ if(err)console.log(err); return callback(body); }
);
Run Code Online (Sandbox Code Playgroud)
并且文件已成功上传到 s3 存储桶,我可以在 aws s3 存储桶控制台中看到。
问题是,如果我尝试从终端使用 curl 放置任何其他图像文件或尝试在浏览器中打开该 url,我得到的预签名 url 会给我签名不匹配错误。
如果我做错了或者我对预签名 url 用法的理解是错误的,请指导我。