AWS Лямбда-функция проблема с загрузкой файла FormData - PullRequest
0 голосов
/ 26 марта 2020

У меня есть код nodejs, который загружает файлы в корзину S3. Я использовал веб-фреймворк koa, и ниже приведены зависимости:

    "@types/koa": "^2.0.48",
    "@types/koa-router": "^7.0.40",
    "koa": "^2.7.0",
    "koa-body": "^4.1.0",
    "koa-router": "^7.4.0",

Ниже приведен пример кода моего маршрутизатора:

import Router from "koa-router";

const router = new Router({ prefix: '/' })
router.post('file/upload', upload)

async function upload(ctx: any, next: any) {
    const files = ctx.request.files
    if(files && files.file) {
      const extension = path.extname(files.file.name)
      const type = files.file.type
      const size = files.file.size
      console.log("file Size--------->:: " + size);
      sendToS3();
    }
  }

function sendToS3() {
   const params = {
      Bucket: bName,
      Key: kName,
      Body: imageBody,
      ACL: 'public-read',
      ContentType: fileType
    };

   s3.upload(params, function (error: any, data: any) {
      if (error) {
        console.log("error", error);
        return;
      }
      console.log('s3Response', data);
      return;
    });
}

Тело запроса отправляется как FormData.

Теперь, когда я запускаю этот код локально и нажимаю на запрос, файл загружается в мою корзину S3 и может быть просмотрен. В консоли размер файла отображается следующим образом: image32212">, который представляет собой правильный фактический размер файла.

Но когда я развертываю этот код как лямбда-функцию и нажимаю на запрос, я увидеть, что размер файла внезапно увеличился (скриншот журнала cloudwatch ниже). image51619">

Тем не менее этот файл загружается на S3, но проблема в том, что когда я открываю файл, он показывает следующую ошибку. enter image description here

Я также попытался выяснить, сохраняется ли это поведение в автономном экземпляре aws. Но это не так. Таким образом, проблема возникает только тогда, когда код развертывается как лямбда-функция без сервера.

Я пытался использовать как почтальон, так и мое собственное приложение. Но проблема остается.

Я не знаю, пропустил ли я какую-либо конфигурацию при настройке лямбда-функции, которая обрабатывает такой сценарий ios.

Это беспрецедентная проблема, с которой я столкнулся и действительно хотел бы знать, сталкивался ли кто-либо еще с таким же раньше. Также я не могу отладить и выяснить, почему размер файла увеличивается. Я могу только предположить, что когда файл достигает службы, для файла выполняется какая-то кодировка / заполнение.

...