我有一个lambda函数,该函数使用'request'通过URL获取文件流,并假设将其上传到s3上的存储桶。 它在使用node的本地计算机上运行正常,但在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();
};
非常感谢您对此问题的任何帮助或指示。
答案 0 :(得分:0)
看起来像您在$ awk '/^\[/{op=$0;next} /Powered.*b.1./{print gensub(/\[\s|\s\]/,"","g", op);exit}' ./list-modems
/hfp/org/bluez/hci0/dev_D0_FC_CC_12_6D_4D
中发布
使用s3 putObject function.
代替s3.putObject
s3.client.putObject
此链接也指向从URL在s3上上传图像帮助您:here
答案 1 :(得分:0)
因此,经过更多尝试,我才能够解决问题。
这是代码的一部分:
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获取流。