У Льоні сьогодні

Робота з великими вихідними файлами на ECS


Літо, річка

Сьогодні продовжував роботу з ECS, генерацією даних, тестами та так далі. Додатковий нюанс — застосування великих вихідних файлів.

  • Якщо в тесті потрібний великий файл (типу, 1 Гб), то через безплатний ngrok його не завантажити. Також не хотілося додавати файл у Git, бо видалити його буде складніше, ніж додати. Тоді можна відвантажити файл на S3 або інше сховище з можливістю публічного доступу. А мій улюблений спосіб простого тимчасового захисту — файл з випадковим імʼям.

  • Є інший варіант — пакувати файл в образ Docker. Щоб уникнути Git, його доведеться пакувати локально, але з ECS для цього немає перешкод — після авторизації в ECR можна відправляти образи прямо зі своєї машини. Проте ECR коштує в 5 разів більше за S3 (зараз $0.10 за Гб/місяць).

  • А якщо файл — це 5 гігабайтів JSONу, то його має сенс стиснути. Тут варто знати, що формат gzip - потоковий формат стискання. Та файл, що був стиснутий у gzip, можна відкрити та читати послідовно, без того, щоб розтискати та займати зайве місце. Наприклад, в Go стиснутий файл відкривається функцією gzip.NewReader.