Рассчитайте S3 ETag локально, используя spark md5 - PullRequest
0 голосов
/ 07 января 2020

Я загрузил файл размером 14 МБ в S3 порциями (5 МБ) каждый, а также с помощью spark-md5 вычислил га sh каждого блока. Отдельный ха sh каждого чанка (генерируемый spark-md5) совпадает с ETag каждого чанка, загруженного на S3.

Но ETag ха sh, созданный при полной загрузке на S3, не совпадает с локально рассчитанным га sh, генерируемым spark-md5. Ниже приведены шаги для локального ха sh:

  1. Генерация ха sh (генерируемого spark-md5) каждого чанка
  2. Присоединение к ха sh каждого чанка
  3. Преобразование в гекс
  4. Расчетное га sh

Ниже приведен код, пожалуйста, проверьте, нет ли ошибок. Подход 1:

        var mergeChunk = self.chunkArray.join('');
        console.log("mergeChunk: " + mergeChunk);

        var hexString = toHexString(mergeChunk);
        console.log("toHexString: " + hexString);

        var cspark1 = SparkMD5.hash(hexString);
        console.log("SparkMD5 final hash: " + cspark1);

Подход 2:

       var mergeChunk = self.chunkArray.join('');
       console.log("mergeChunk: " + mergeChunk);
       var cspark2 = SparkMD5.hash(mergeChunk);
       console.log("SparkMD5 final hash: " + cspark2);

Пожалуйста, предоставьте правильный лог c для расчета ETag.

1 Ответ

0 голосов
/ 09 января 2020

Этаги должны быть непрозрачными; AWS не дает никаких гарантий относительно того, что является тегом для многоэтапной загрузки.

Я думаю, что это просто кот блоков (в порядке, указанном в окончательном POST), но вы не могу на это рассчитывать.

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