我有一个lambda函数,该函数使用'request'通过URL获取文件流,并假设将其上传到s3的存储桶中。它可以在使用节点的本地计算机上正常运行,但不能在lambda内部运行。运行lambda之后,我有一个空文件,其名称为我想要的。
你应该知道的东西
这是代码的相关部分
module.exports.handler = async(event, context, callback) => {
const path = 'bucketToUpload';
const name = 'imageFileName.jpg';
let options = {
uri: responseUrl, // This is the url of the image
encoding: null
};
let reqRes = await request(options); // Here I have the stream
let awsPutRes = await s3.client.putObject({
Body: reqRes.body,
Key: name,
Bucket: path
}).promise();
};
非常感谢您对此问题的任何帮助或指示。
因此,经过更多尝试,我得以解决该问题。
这是代码的一部分:
async function upload(fileStream, fileName, bucketName) {
let params = {
Body: fileStream,
Key: fileName,
Bucket: bucketName
};
await s3.client.putObject(params).promise();
}
module.exports.handler = async(event, context) => {
try {
let s3UploadParams = {
uri: imageDownloadUrl,
encoding: null
};
let imageFileStream = await request(s3UploadParams);
await upload(imageFileStream, s3FileName, bucketName);
} catch (err) {
context.fail(null, 'Error trying to upload to aws' + err);
}
}
我不是使用'request'lib而是使用'request-promise-native'从URL获取流。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句