170 похожих чатов

Всем привет! Подбросьте идей пожалуйста! Стоит задача - трекать число скачиваний объектов

с AWS S3. (число скачиваний важно для корректного биллинга клиента). Как можно это сделать, и как сделать так, чтобы не заабьюзить технологически (фронт по 10 раз подгружает для одного пользователя) и ( и в идеале, хотя и без этого могу обойтись) для клиента, чтоб если он ушел с файла на главную, а потом вернулся - не считалось как дополнительное скачивание)?

29 ответов

19 просмотров

проксировать запрос на бакет через свой сервер

Egor- Автор вопроса

более конкретно. То есть я не отдаю пресайнд урлы, а именно передаю файлы от сервера? А если подключим цдн? С учетом того что планируется подключение цдн - это плохое решение

Egor- Автор вопроса

а кто-то прямые ссылки из с3 отдает?

Alexey Ermakov
а кто-то прямые ссылки из с3 отдает?

интересный вопрос) что вы имеете ввиду?)

Bohdan Yurchuk
интересный вопрос) что вы имеете ввиду?)

я имею в виду, что файлы из бакета и так не должны напрямую отдаваться)

Egor- Автор вопроса
Alexey Ermakov
я имею в виду, что файлы из бакета и так не должны...

в чем проблема давать прямые ссылки на фронт если дата например картинок из магазина? Или, например, тот же вебсайт который стоит на s3 (хоть это и редкость, но делают)

Bohdan Yurchuk
почему не должны? зачем тогда бакет

чтобы его (бакет) через цдн отдавать или через свои сервисы

Alexey Ermakov
чтобы его (бакет) через цдн отдавать или через сво...

ну если ты ожидаешь посетитилей только из региона где хостится бакет, то думаю разница не заметна. а если у тебя worldwide to cloud front в помощь

Bohdan Yurchuk
ну если ты ожидаешь посетитилей только из региона ...

а если часть картинок нельзя кешировать или некоторые файлы отдавать только определенным пользователям?

Там есть уже встроенные метрики!

Зачем тогда у амазона есть для этого соотв политика?

так паблик рид не нужно 🤷‍♂

Alexey Ermakov
так паблик рид не нужно 🤷‍♂

Можно через прокси/лямьду считать загрузки и отдавать картинку, но тогда придётся платить ещё и за лямбду. Цель биллинга не ограничить доступ, а выставить счёт за использование, трекать юзера можно по логам

какая разница, лямбды или "обычный" сервис? в итоге все равно не напрямую отдаются ассеты

Alexey Ermakov
какая разница, лямбды или "обычный" сервис? в итог...

Нельзя отдать публично доступную ссылку на файл в бакете?

Artem Soroka
Нельзя отдать публично доступную ссылку на файл в ...

а трекать доступ как? ну, чтобы за просмотр денежка списывалась, но если обновить страницу - это не было бы повторным просмотром или какие-нибудь иные правила?

Alexey Ermakov
а трекать доступ как? ну, чтобы за просмотр денежк...

В логи зайти и посмотреть, ну и спарсить там по нужным правилам

Alexey Ermakov
о, ну это замечательный подход 👍

В конце отчетного периода джоба, юзерам выставили счёт, профит

а в системе тоже из под рута или администратора сидишь?

Alexey Ermakov
а кто-то прямые ссылки из с3 отдает?

прикол, что я уже не один "серьзеный" сервис видел где данные отдаются напрямую по s3 ссылке, через <bucket>.s3.amazonaws/...

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта