【发布时间】:2020-04-10 16:39:57
【问题描述】:
我正在研究 Nodejs Lambda 函数。它是获取远程视频文件上传到s3。虽然它适用于小文件,但大文件因 API 网关的时间限制(29 秒)而失败。
当代码在 lambda 上运行时,有没有办法让我提前收到对请求的 api 回调?
我用 Async 封装了这个函数,但它需要同样的时间。可能我在 Nodejs 中设置异步作业时错了。
下面是代码。
'use strict';
const fetch = require('node-fetch');
const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies
const s3 = new AWS.S3();
module.exports.save = (event, context, callback) => {
const url = "some_url";
const Bucket = "recorded-video";
const key = "some_key.mp4"
fetch(url)
.then((response) => {
if (response.ok) {
return response;
}
return Promise.reject(new Error(
`Failed to fetch ${response.url}: ${response.status} ${response.statusText}`));
})
.then(response => response.buffer())
.then(buffer => (
{
s3.putObject({
Bucket: process.env.BUCKET,
Key: key,
Body: buffer,
}).promise();
// then give permission.
}
))
};
【问题讨论】: