несколько изображений не полностью загружены на S3 при первом лямбда-вызове - PullRequest
2 голосов
/ 18 мая 2019

У меня проблема с загрузкой нескольких файлов на s3.что делает моя лямбда: 1. загрузка одного файла в s3 (всегда работает).2. изменение размера файла до 4 новых размеров (с использованием Sharp).3. загрузить файлы с измененным размером в s3.

проблема: иногда загружаются только 2 или 3 из 4 файлов с измененным размером.удивительно то, что я заметил, что при следующей загрузке - добавляются отсутствующие файлы из предыдущей загрузки.

без ошибок, я думал, что это может быть асинхронная проблема, поэтому я ждал подходящих мест, чтобы сделать этоСинхронный.

оценят любую помощь.

асинхронная функция 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);
    });

})

}

...