我正在尝试使用aws lambda发送一个简单的请求。
我的模块结构如下:
mylambda
|-- index.js
|-- node_modules
| |-- request
我将文件压缩并将其上传到lambda。
然后我调用它,它返回以下错误。 "errorMessage": "Cannot find module 'index'"
以下是index.js文件的内容
var request = require('request');
exports.handler = function(event, context) {
var headers = { 'User-Agent': 'Super Agent/0.0.1', 'Content-Type': 'application/x-www-form-urlencoded' }
// Configure the request
var options = {
url: 'https://myendpoint',
method: 'POST',
headers: headers,
form: {'payload': {"text":""} }
}
// Start the request
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
})
console.log('value1 =', event.key1);
context.succeed(event.key1); // Echo back the first key value
};
感谢任何帮助,谢谢
答案 0 :(得分:7)
现在全部工作,我必须在高级设置中增加超时秒,因为它花费的时间超过3秒。
此外,我必须确保我的节点模块已正确安装。在试图找出问题时,我搞砸了请求模块。
要重新安装模块,我删除了然后重新安装请求。
npm init
"request" : "*"
,npm install
。压缩拉链并上传,现在全部正常工作。 :)答案 1 :(得分:2)
您必须仅压缩和上传子文件夹,而不是根文件夹。您必须按照示例压缩以下文件夹,然后上传:
|-- index.js
|-- node_modules
|-- request
答案 2 :(得分:1)
任务:编写aws lamda函数:
我如何看待我们:
我们在aws编辑器中编写代码并运行该代码
未按预期运行,请在其中放置许多控制台(因为我们无法调试代码)
等待几秒钟,然后在另一个窗口中查看控制台,不断更改窗口,直到我们解决问题为止
4。更换窗户需要很多时间和精力。
为什么不能?
是的,我们可以。
示例代码:
let fs = require('fs');
const aws = require("aws-sdk");
const s3 = new aws.S3(),
async = require('async');
aws.config = {
"accessKeyId": "xyz",
"secretAccessKey": "xyz",
"region": "us-east-1"
};
fs.readFile('path to your code file', 'utf-8', async (err, code) => {
if (err) return res.status(500).send({ err });
async function uploadToS3(docs) { (only this function has to go into aws editor)
let func = new Function('docs', "aws", "s3", 'async', `${code}`);
return func(docs, aws, s3, async);
}
let resp = await uploa`enter code here`dToS3(req.files.docs);(this line will call aws lambda function from our server)
return res.send({ resp });
});
我在文件中编写的代码:
docs = Array.isArray(docs) ? docs : [docs]
let funArray = [];
docs.forEach((value) => {
funArray.push(function (callback) {
s3.upload({
Bucket: "xxx",
Body: value.data,
Key: "anurag" + "/" + new Date(),
ContentType: value.mimetype
}, function (err, res) {
if (err) {
return callback(err, null);
}
return callback(null, res);
});
});
});
return new Promise((resolve, reject) => {
async.parallel(funArray, (err, data) => {
resolve(data);
});
});
好处:
注意: