s3.putObject иногда получает ошибку CORS, а иногда работает - PullRequest
0 голосов
/ 23 марта 2020

Я боролся с этой проблемой уже несколько часов. Основная цель - загрузить файл на серверы S3, используя метод s3.putObject(). Однако процесс загрузки нестабилен и иногда ведет себя странно.

Проблема заключается в следующем:

  • запрос PUT случайным образом получит ошибку CORS и не получить ответ от сервера ... затем автоматически попробуйте снова. После нескольких попыток запрос PUT проходит без каких-либо ошибок CORS и с правильной полезной нагрузкой.
  • Иногда он работает с первым запросом PUT
  • Иногда происходит сбой 4 раза подряд (что вызывает сетевую ошибку)

Обратите внимание, что я не вызываю функцию загрузки 4 раза. Кажется, он автоматически запускается после получения ошибки CORS.

И да, CORS настроен

Эта функция создает буфер из имеющихся у меня данных и подготавливает полезную нагрузку для загрузки. функция:

export const sendDataForHealthCheck = (csvDataArray, fileName, onEnd) => {
  const csv = fileHelper.arrayToCSV(csvDataArray);
  const fileContent = Buffer.from(csv, "utf8");
  const payload = {
    targetName: fileName,
    fileContent: fileContent,
    onEnd: onEnd,
  };
  uploadObjectToS3(payload);
};

Затем эта функция заботится о загрузке:

export const uploadObjectToS3 = ({
  targetName,
  fileContent,
  options = {},
  onEnd = r => console.log(r)
}) => {
  const setParams = {
    Bucket: bucketParams.Bucket,
    Key: targetName,
    Body: fileContent
  };
  s3.putObject(setParams, (err, data) => {
    if (err) {
      console.log(err);
      const errorObject = {
        error: {
          type: "Google Cloud Storage",
          status: "Fail",
          message: err
        }
      };
      onEnd(errorObject);
      return errorObject;
    } else {
      console.log(`File uploaded successfully.`);
      onEnd(data);
      return data;
    }
  })
};

На Mozilla я получаю CORS ошибку , на Chrome Я получаю net :: ERR_SSL_BAD_RECORD_MAC_ALERT ошибка, но в обоих случаях иногда это работает, иногда нет (с одним и тем же точным файлом между прочим)

Любые идеи что может быть причиной этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...