第一次lambda调用时,多个图像未完全上传到S3

时间:2019-05-18 09:36:21

标签: node.js amazon-s3 aws-lambda serverless

我在将多个文件上传到s3时遇到问题。 我的lambda在做什么: 1.将单个文件上传到s3(始终有效)。 2.将文件调整为4个新大小(使用Sharp)。 3.将调整大小的文件上传到s3。

问题:有时只有4个调整大小的文件中只有2或3个被上传。 令人惊讶的是,我注意到在下一次上传时-添加了先前上传的丢失文件。

没有错误,我以为这可能是异步问题,所以我在等待正确的位置使其同步。

将感谢您的帮助。

异步函数uploadImageArrToS3(resizeImagesResponse){

return new Promise(async function (resolve, reject) {
    var params = {
        Bucket: bucketName,
        ACL: 'public-read'
    };

    let uploadImgArr = resizeImagesResponse.map(async (buffer) => {
        params.Key = buffer.imgParamsArray.Key;
        params.Body = buffer.imgParamsArray.Body;
        params.ContentType = buffer.imgParamsArray.ContentType;

        let filenamePath = await s3.putObject(params, (e, d) => {
            if (e) {
                reject(e);
            } else {
                d.name = params.ContentType;
                return (d.name);
            }
        }).params.Key

        let parts = filenamePath.split("/");
        let fileName = parts[parts.length - 1]; 


        return {
            fileName: fileName,
            width: buffer.width
        };

    });

    await Promise.all(uploadImgArr).then(function (resizedFiles) {
        console.log('succesfully resized the image!');
        resolve(resizedFiles);
    });

})

}

0 个答案:

没有答案