7:17 когда говорят о загрузке на S3, почему-то редко вспоминают такую штуку, как подписанные URL-ы. Суть в том, что бекенд с помощью своих секретов от S3 подписывает специально сформированный URL, отдаёт его фронтенду, а фронт уже сам туда заливает нужный файл. Это экономит ресурсы бекенда и время пользователя. При этом у подписи есть срок жизнь (до семи дней), то есть, URL сам отключается и не даёт заменить данные. Плюс можно ограничить размер заливаемого файла, чтобы особо ушлые пользователи не слили весь ваш бюджет на хранение. Плюс в тот же URL можно зашивать кастомные теги, которые будут проставлены на файл после заливки (и пользователь не сможет их подменить, потому что они защищиены подписью). В общем, очень недооценённая функциональность.
Артём спасибо вам за разбор темы! Мысли в слух: S3 и приватные данные - не совместимые понятия))) Как только мы загружаем приватные данные во внешнее хранилище которое мы не контролируем - они перестают быть приватными)))
GPG и его папа PGP передают привет. Бэкапы и приватную инфу нормальные (в лучшем смысле этого слова) люди льют в зашифрованном виде. А ещё эти нормальные люди почту шифруют и не удивляются новостям, что (внезапно) эти сервисы (естественно, бездушными роботами) читают почту пользователей.
На мой взгляд, хранилища типа S3 отлично подходят, например для того, чтобы фотографии пользователей хранить - или любых других ФАЙЛОВ, которые не жалко потерять и для которых не хватает места на основных серверах. А основную БД лучше держать на выделенном сервере (а вот бекапы уже выгружать в холодное хранилище - отличный вариант!)
Использую google storage внутри firebase. Храним гигабайты данных на нашем видео в хостинге внутри нашей музыкальной школы. Но самое главное, это не только дешево, а еще и доступ к любому файлу можно завязать с авторизацией😊
Не показано как динамически получить ссылку на файл (через бэкэнд, а не Ctrl+C & Ctrl+V). Если уж делать страничку, то делать с загрузкой файла через фронтенд. Владельцы сервиса могут сливать приватные данные, это тоже нужно учитывать.
а я правильно понимаю что async with self.session.create_client ... yield client это на каждый вызов метода upload_file открытие (закрытие) tcp соединения со всеми накладными расходами?
По опыту, в хорошей СУБД вообще никаких проблем с хранением файлов нет. На примере того же MS SQL Server, даже не обязательно FILESTREAM мутить. 70 ГБ прекрасно работало без падения производительности на HDD. На SSD теперь это и подавно не актуально. Если есть беспокойство за таблицы, просто выносите в отдельную а-ля словарь или типа того и в отдельный MDF размещайте. S3 это интересно, но считайте деньги и >реальную< целесообразность.
70 Gb - это смешной размер базы просто, вот у вас там поэтому что-то и работает. У нас центральный даталейк на постгрюхе 40+ Tb, а в S3 вообще сотни... На MS SQL построено несколько DWH 1-3Tb каждая. Как только у вас файлов будет приличное кол-во, никакой filestream вас не спасет, а использование блобов для хранения файлов в реляционной базе вообще антипатерн.
@@Mikluxa.Maklai так, о том и речь! Если у вас уже серьезный большой размер базы данных всё это имеет смысл, а если у вас до 500 ГБ и/или малое количество запросов, то смысла не имеет морочиться с этими облачными хранилищами, разве только если хотите потратить деньги. Никаких антипаттернов - база данных для того и есть, чтобы в ней хранить данные и обеспечивать их ЦЕЛОСТНОСТЬ (важно), реляционная она или ещё какая - это просто модель.
Привет! Я правильно понимаю, что облачное хранилище Google Drive не подойдёт для хранения файлов в нём? Я вижу, что Selectel генерирует рандомные URL адреса до объектов. А в Google Drive ссылки на файлы генерируется на основе ID файлов. Теоретически можно перебрать все адреса и получить доступ к файлам юзера, если доступ по ссылке. Если сделать доступ только по отдельным email, то надо всегда заставлять пользователя отдельно регистрироваться в Google, чтобы видеть картинки (даже публичные, которые хранятся на этом же облаке), а такой юзер-экспириенс явно не очень...
Интересный мини-гайд. Понятно, что Selectel тут явялется рекламодателем. Но! Не одним Selectel'ом един рунет. Подскажите, на какие факторы стоит обращать при выборе объектного хранилища S3, если, к примеру, оно будет организовано под размещение на нем картинок видосов и документов со средней частотой скачивания (т.е. средние показатели). Если, к примеру, рассматривать из гигантов: Яндекс, Сбер, VK, Selectel. В целом у них по возможностьям и цене все более-менее одинаково. И вот интересно, может есть какие нюансы на которые стоит обратить внимание?
Если под «в России» вы имеете в виду, что нужно хранение на территории России, то никак, у Амазона нет дата-центров в России. Посмотрите на любой российский вариант, сходу могу вспомнить Яндекс, Selectel, Timeweb. С точки зрения кода и архитектуры разница близка к нулю. А если имеется ввиду оплата из России (а хранение в Европе или где-то ещё), то можно попробовать завести карту в банке Армении или Казахстана.
А какой вариант приватности выбирать для голосовых сообщений? На сайте есть чат с голосовыми сообщениями. Для фоток публичный окей, а как быть с голосовыми? Они тоже пока что на публичном и для имени генерится uuid, и методом перебора ссылку фиг получить, но все же. Для приватного как получать всегда ссылку? Чтобы получать ссылку на аудио только через бек ?
Отличное вводное видео! пара вопросов, как тестировать работу с s3 моками? и как например защищаться от каких нибудь ддос атак, что бы нам все деньги не скушали? и будет ли продолжение?
Привет! Нравится смотреть твои видео, хорошая подача материала. Сам сейчас работаю backend Java разработчиком, начинал с python fast API. Здорово, что ты подсвечивает технологии, которые независимы от языка. Также хочу предложить идею рассказать про распределенные транзакции, саги и тому подобное, поскольку грамотное построение межсервисного взаимодействия мало подсвечено на ютубе. Тема скорее уже ближе к мидлу условному, однако базовые моменты был бы рад увидеть в твоём видео.
Разве можно найти работу сейчас, зная только fastApi, или как конфиг s3 заполнить? Хотя может и можно, некоторые кроме reactJs ничего не знают, и работают же.
Можно. Тебе подойдет любой провайдер S3. Так как при настройке ты просто указываешь ключи доступа, endpoint url, и регион. Всю эту информацию ты можешь получить от своего провайдера. И это будет работать так как API совместимы между собой. В документации label studio написано как подключать (сразу можешь перейти к подключению, а не настройке S3 бакета)
А есть возможность через API подгружать с файлами доп.информацию, типа теги, описание и прочие и соответственно потом выкачивать из хранилища файлы по своим критериям?
Навесить теги можно, но поиска по ним нет. Можно только получить информацию о файле, а в ней теги. Так что да, если нужен поиск, то хранить у себя в базе ссылки и всю нужную мета-информацию.
Обычно провайдер предоставляет доступ на запись по с3, а чтение - через хттп. Вся сидиэнка там. Поэтому приложению не нужно подключаться по с3, выкладКа через файловый менеджер
по сути это не нужно делать, достаточно хранить название файла, например, мы храним картинку кота в S3 по адресу /img/cat.jpg -> достаточно хранить только этот адрес. А сам домен, по которому живут картинки, у нас находится всегда в переменных окружения, и мы просто подставляем его и приклеиваем адрес картинки
@@artemshumeiko неделю назад как раз подрубил s3 от timeweb. долго ломал голову как же получить ссылку на файл после загрузки. В итоге тупо стал хранить название файла в бд и строить ссылку s3_link/file_name. сейчас вижу что это правильное решение)
@@artemshumeikoАртем, спасибо, если можно, уточняющий вопрос еще. Я, загрузив файл в S3-хранилище, хочу затем пульнуть его в тг-канал как ссылку. Как мне сформировать эту ссылку, из какой переменной окружения взять первую часть url? И обязательно ли для этого бакет должен быть публичным?
будут конечно, но хранить в базе файлы -- такое себе занятие. Нужно руками настраивать бэкапы отдельно файлов, отдельно данных в базе, настраивать шардирование, т.к. база не резиновая явно, а файлы много места занимают, выстраивать доступы до конкретных файлов, настраивать cdn для быстрой отдачи файлов по миру. Представьте, что нужно хранить паспортные данные, фото котиков, аватарки, сканы документов и доступ до всех файлов нужно выдавать конкретной команде/департаменту. Так еще чтобы можно было удобно в веб-панели ими управлять.. Вот тут и приходит на помощь S3 :)
@@artemshumeiko ну это да, просто насколько я знаю все стремятся задержки как можно больше сокращать, а такое обращение к внешним ьд помешает этому, а так спасибо!
после мая курс будет недоступен для продажи никогда, то есть не будет такого, что через несколько месяцев я вернусь с обновленной версией текущего курса
Спасибо за информацию, похоже на то же самое облако диски, только возможности поинтереснее, только вот паспортные данные я бы побоялся там хранить и прочею конфиденциальную информацию, сломают селектейл и все данные утекут, а для хранения личных данных отвечает компания которая продает услуги и берет эти данные под свою ответственность.
@@artemshumeiko а какой ещё выход? Допустим те же банки хранят всё данные у себя на серверах, и имеют сертификацию PCI dss, и те же самые паспортные данные, когда их отправляют на s3 по факту нарушают закон о передачи данных 3лицам, если это не прописано в договоре оказания услуг, тут одно из двух такие данные всё же хранить у себя или иметь нужный договор оказания услуг, и то и то дорого может обойтись
Что-то я не помню, чтобы хоть кто-то понёс реальное наказание за утечку персональных данных пользователей. У того же СДЕК-а уже как минимум второй раз крадут данные, и что-то тихо всё. Но вообще можно подумать над end-to-end шифрованием: шифруешь файл на своём бекенде, на S3 загружаешь шифрованный файл. При необходимости скачиваешь и расшифровываешь тоже у себя на бекенде. Детали зависят от условий задачи.
За год в финтехе технически получил миддла, но если честно понимаю, что торопился. Твои видео как глоток воздуха) спокойно применяю на пет проекте с пользователями 100+ сотрудников, переписываю то что писал еще стажёром 😁
@@artemshumeiko я покупал два диска по 8 Тб, по 5000 тыщ каждый, и пользуюсь уже 4 года, прикинь, сколько денег бы ушло на ежемесячные платежи (дофига)
Привет, круто, спасибо s3 хранилище действительно очень актуально на рынке, и нужно знать не только разработчикам и архитекторам, но и другим специалистам (аналитикам, тестировщикам, девопсам). Хорошо бы еще увидеть как можно с этим работать, на примере какой ни будь тривиальной задачи, например хранение фотографии профиля пользователя (на фронте загрузили, на бэкенде сохранили в s3, получили ссылку на этот файл в хранилище, сохранили ее в связке с пользователем и потом отображаем фото по ссылке из s3).
Не понял, какое отношение имеет этот s3 к чанковой загрузке видео, я же могу любую ссылку на видео вставить и оно тоже будет чанками грузиться, это вообще ответственность браузера и как он интерпретирует HTML, к вашему примеру это не имеет никакого отношения. Ну и по поводу хранилища, я тоже не понял, чем оно лучше обычного http протокола? сайт то тоже хранится на каком-то сервере, с бэкапами, к страницам настроены права доступа и т.п. В общем ни о чём, как по мне...
я работаю в Самокате и мы активно юзаем S3 Селектела, поэтому считаю, что все норм с S3 хранилищами p.s. на прошлой работе тоже юзали S3 крупного российского провайдера
@@artemshumeiko все верно оно соответствует требованиям, но при построении информационной системы безопасности в компании тянет за собой много дорогостоящих нюансов
У меня в компе 4 диска, файлы хранятся зеркально на всех. Если у тебя 10гб хранилище, то проще хранить, как у меня. Вот если большие объемы то там уже надо думать.
Вопрос хранения - это всегда вопрос баланса между стоимостью и допустимыми рисками) RAID массив спасёт от отказа одного из дисков, но не спасёт от пожара, наводнения и других физических угроз серверу. Облачное хранение покрывает эти риски, но добавляет другие, вроде разорения твоего провайдера или санкций. Эти риски покрываются использованием нескольких облаков. В общем, всё зависит от того, какие данные нужно хранить.
Хранилище и хранилище. Как показывает опыт, никто лучше кроме вас не позаботиться о сохранности данных. У всех рано или поздно бывают факапы и за те копейки что стоит хранилище, никто ничего не восстановит. S3 увы, это никакая не волшебная палочка-выручалочка.
@@artemshumeiko для начала локально хранить можно. Необходимость в сетевом хранилище возникает как только приложение начинает реплицироваться на несколько серверов, чтобы сделать его единым для всех. Вместо S3 может использоваться сетевой диск. В целом остаётся открытым вопрос резервного копирования содержимого такого хранилища.
Ага, облака)) облака надежды и вечные, поверьте свои данные третьим лицам)) если работаете над чем то серьезным то ничего не должно покидать ваш контур. Баловство все это, если не хуже.
Прикол в том, что эти данные будут доступны selectel поэтому это нифига не безопасно, если их сломают, то и все хранилища будут сломаны... Само видео интересное и хранилище классное, интересно а как самому такое создать...
Приглашаю на мой Практический курс по Backend разработке по всем актуальным технологиям: artemshumeiko.ru
7:17 когда говорят о загрузке на S3, почему-то редко вспоминают такую штуку, как подписанные URL-ы. Суть в том, что бекенд с помощью своих секретов от S3 подписывает специально сформированный URL, отдаёт его фронтенду, а фронт уже сам туда заливает нужный файл. Это экономит ресурсы бекенда и время пользователя. При этом у подписи есть срок жизнь (до семи дней), то есть, URL сам отключается и не даёт заменить данные. Плюс можно ограничить размер заливаемого файла, чтобы особо ушлые пользователи не слили весь ваш бюджет на хранение. Плюс в тот же URL можно зашивать кастомные теги, которые будут проставлены на файл после заливки (и пользователь не сможет их подменить, потому что они защищиены подписью). В общем, очень недооценённая функциональность.
Ну вот! Умеешь могешь! Вот за такие ролики я и обожаю этот канал )
За какие? Рекламные? Кроме рекламы тут ничего нет. Такой код и гпт напишет, да и вероятно на стаковерфлоу есть)))
2:10 Ага. Да хоть в 10 - Гугл тут недавно взял и потёр все копии крупнейшего пенсионного фонда Автралии. Хорошо там были бэкапы НЕ в гугле :)
прочитал - грустная история :(
@@artemshumeiko
Поэтому лучший девопс - девопс параноик! :)
Это всё же человеческий фактор был, от него, увы, никто не застрахован!
@@saitaro- да-да, именно везде человеческий фактор… ну что поделаешь: живём среди людей)
Артём спасибо вам за разбор темы!
Мысли в слух:
S3 и приватные данные - не совместимые понятия)))
Как только мы загружаем приватные данные во внешнее хранилище которое мы не контролируем - они перестают быть приватными)))
GPG и его папа PGP передают привет. Бэкапы и приватную инфу нормальные (в лучшем смысле этого слова) люди льют в зашифрованном виде. А ещё эти нормальные люди почту шифруют и не удивляются новостям, что (внезапно) эти сервисы (естественно, бездушными роботами) читают почту пользователей.
Всегда удивлялся людям, которые топят за облачные сервисы.
@@__username__ Ага, люди в пагонах передают пламенный привет всем, кто использует не сертифицированные СКЗИ )
@@АлексейСимонов-ц4р Да пусть хоть запередаются. Если вы не входите в КИИ, то вам эти СКЗИ до ПЗД.
@@kirshkro Облачные сервисы - это хорошо. Но если это использовать аккуратно и не доводить ситуацию до вендорозависимости.
На мой взгляд, хранилища типа S3 отлично подходят, например для того, чтобы фотографии пользователей хранить - или любых других ФАЙЛОВ, которые не жалко потерять и для которых не хватает места на основных серверах.
А основную БД лучше держать на выделенном сервере (а вот бекапы уже выгружать в холодное хранилище - отличный вариант!)
А почему вдруг фотографии пользователя это данные которые не жаль потерять? Клиент вам спасибо за такое точно не скажет...
Использую google storage внутри firebase. Храним гигабайты данных на нашем видео в хостинге внутри нашей музыкальной школы. Но самое главное, это не только дешево, а еще и доступ к любому файлу можно завязать с авторизацией😊
Не показано как динамически получить ссылку на файл (через бэкэнд, а не Ctrl+C & Ctrl+V). Если уж делать страничку, то делать с загрузкой файла через фронтенд.
Владельцы сервиса могут сливать приватные данные, это тоже нужно учитывать.
что за плагин для автодополнения, похож на IntelliSense вски, давно такое ищу
Как насчёт ipfs?
а я правильно понимаю что
async with self.session.create_client
...
yield client
это на каждый вызов метода upload_file открытие (закрытие) tcp соединения со всеми накладными расходами?
а сними плз ролик как в джангу подключить Yandex Object Storage
Хых! Про приватные данные - это сильно! ))) Сильно палевно!)))
Всем привет, а есть программы под винду чтоб был доступ к S3 хранилищу?
Как обеспечить целостность данных при бэкапе БД на связке БД + S3?
По опыту, в хорошей СУБД вообще никаких проблем с хранением файлов нет. На примере того же MS SQL Server, даже не обязательно FILESTREAM мутить. 70 ГБ прекрасно работало без падения производительности на HDD. На SSD теперь это и подавно не актуально. Если есть беспокойство за таблицы, просто выносите в отдельную а-ля словарь или типа того и в отдельный MDF размещайте.
S3 это интересно, но считайте деньги и >реальную< целесообразность.
70 Gb - это смешной размер базы просто, вот у вас там поэтому что-то и работает. У нас центральный даталейк на постгрюхе 40+ Tb, а в S3 вообще сотни... На MS SQL построено несколько DWH 1-3Tb каждая. Как только у вас файлов будет приличное кол-во, никакой filestream вас не спасет, а использование блобов для хранения файлов в реляционной базе вообще антипатерн.
@@Mikluxa.Maklai так, о том и речь! Если у вас уже серьезный большой размер базы данных всё это имеет смысл, а если у вас до 500 ГБ и/или малое количество запросов, то смысла не имеет морочиться с этими облачными хранилищами, разве только если хотите потратить деньги. Никаких антипаттернов - база данных для того и есть, чтобы в ней хранить данные и обеспечивать их ЦЕЛОСТНОСТЬ (важно), реляционная она или ещё какая - это просто модель.
Привет! Я правильно понимаю, что облачное хранилище Google Drive не подойдёт для хранения файлов в нём? Я вижу, что Selectel генерирует рандомные URL адреса до объектов. А в Google Drive ссылки на файлы генерируется на основе ID файлов. Теоретически можно перебрать все адреса и получить доступ к файлам юзера, если доступ по ссылке. Если сделать доступ только по отдельным email, то надо всегда заставлять пользователя отдельно регистрироваться в Google, чтобы видеть картинки (даже публичные, которые хранятся на этом же облаке), а такой юзер-экспириенс явно не очень...
Интересный мини-гайд.
Понятно, что Selectel тут явялется рекламодателем.
Но! Не одним Selectel'ом един рунет.
Подскажите, на какие факторы стоит обращать при выборе объектного хранилища S3, если, к примеру, оно будет организовано под размещение на нем картинок видосов и документов со средней частотой скачивания (т.е. средние показатели).
Если, к примеру, рассматривать из гигантов: Яндекс, Сбер, VK, Selectel. В целом у них по возможностьям и цене все более-менее одинаково.
И вот интересно, может есть какие нюансы на которые стоит обратить внимание?
бери яндекс,
Для бэкапа можно использать rclone и не нужно писать никакого кода, нужно только настроить подключение и запускать команду rclone по расписани.
Можете подсказать, как решить ошибку? raise SSLError(endpoint_url=request.url, error=e)
botocore.exceptions.SSLError: SSL validation
Такая же ошибка
попробуйте указать verify=False внутри функции create_client, либо расширив self.config ключом "verify": False
@@artemshumeiko работает "verify": False
У меня возникала ошибка SSL: CERTIFICATE_VERIFY_FAILED, после установки пакета "certifi", ошибка пропала
Где купить это хранилище, именно через Амазон сервисы? (В России)
Если под «в России» вы имеете в виду, что нужно хранение на территории России, то никак, у Амазона нет дата-центров в России. Посмотрите на любой российский вариант, сходу могу вспомнить Яндекс, Selectel, Timeweb. С точки зрения кода и архитектуры разница близка к нулю. А если имеется ввиду оплата из России (а хранение в Европе или где-то ещё), то можно попробовать завести карту в банке Армении или Казахстана.
Ну это круто, спасибо!) как в кассу вышел видос с тем, что мне в моем проекте надо сделать s3))) оп оп и готово
а что думаешь насчет шифрования чувствительных данных перед отправкой на S3? нужно/не нужно?
Никогда не будет лишним. Тут вопрос доверия к провайдеру хранилища.
Какой python? Если есть C..
какой ИИ помощник используешь в IDE?
никакой
это PyCharm Professional
Это copilot, встроенный в IDE.
Только почему ты в асинхронную функцию засовываешь синхронную с открытием файла
Жду с нетерпением разбора!
Добрый день!
Хорошее видео, но тег для img ( 17:30 ) пишется без знака `/`
А есть локальные s3 хранилища? Тип хранить всё на своей машине
Есть популярная opensource реализация - Minio
А какой вариант приватности выбирать для голосовых сообщений? На сайте есть чат с голосовыми сообщениями. Для фоток публичный окей, а как быть с голосовыми? Они тоже пока что на публичном и для имени генерится uuid, и методом перебора ссылку фиг получить, но все же. Для приватного как получать всегда ссылку? Чтобы получать ссылку на аудио только через бек ?
да, получать ссылку только через бэк
Можешь подсказать, как получать на бэкенде ссылку на файл при загрузке в приватный бакет?
А если с java работаю то там тоже любая библиотека для amazon будет работать с selectel или timeweb cloud например?
Да, у них протокол работы один и тот же - S3
Запомните!!! Хоть Z7. Свои Данные хранить у Дяди сема супер небезопасно.😎☝️
Тебя свои же быстрее посадят , чем «дядя сема»
Ты прямо Бог!
Отличное вводное видео! пара вопросов, как тестировать работу с s3 моками? и как например защищаться от каких нибудь ддос атак, что бы нам все деньги не скушали? и будет ли продолжение?
Гуглится на первой строчке
Привет! Нравится смотреть твои видео, хорошая подача материала. Сам сейчас работаю backend Java разработчиком, начинал с python fast API. Здорово, что ты подсвечивает технологии, которые независимы от языка.
Также хочу предложить идею рассказать про распределенные транзакции, саги и тому подобное, поскольку грамотное построение межсервисного взаимодействия мало подсвечено на ютубе. Тема скорее уже ближе к мидлу условному, однако базовые моменты был бы рад увидеть в твоём видео.
Еще бы вкратце про ролевую модель рассказал, вообще огонь было бы)
Какой микрофон у тебя Артем
Разве можно найти работу сейчас, зная только fastApi, или как конфиг s3 заполнить?
Хотя может и можно, некоторые кроме reactJs ничего не знают, и работают же.
Ну не приучайте пользователей хранить секртные ключи в таком виде же!
я не хочу записывать часовые видосы
Неужели тот, кто пришёл смотреть как прикрутить S3, не знает, как правильно хранить ключи?)
@@artemshumeiko не думаю, что видео станет часовым, если ты покажешь как не хардкодить ключи в код.
@@CTPEJIKuH Не будь душнилой
@@CTPEJIKuHзапиши ролик и узнаем
Может кто знает, можно ли в label studio подключить S3 не от amazon? В настройках именно написано AWS S3
Можно. Тебе подойдет любой провайдер S3. Так как при настройке ты просто указываешь ключи доступа, endpoint url, и регион. Всю эту информацию ты можешь получить от своего провайдера. И это будет работать так как API совместимы между собой. В документации label studio написано как подключать (сразу можешь перейти к подключению, а не настройке S3 бакета)
@@AlexandrMeshkov-k6l Спасибо за ответ
Видос супер. Спасибо ! Но микрофон чуть подальше, а то такое ощущение, что ты на ушко шепчешь
Нравятся твои видео, да и "Самокат" тоже. Лайк, положительный комментарий, все дела:)
спасибо!
Для тестовой локальной работы с s3 хранилищем есть смысл использовать minio - чтобы трафик не оплачивать.
все так, но 100 рублей как будто не деньги :) учитывая, что не придется париться с развертыванием
А есть возможность через API подгружать с файлами доп.информацию, типа теги, описание и прочие и соответственно потом выкачивать из хранилища файлы по своим критериям?
Так локально в базе сохраняй название файла и данные о нём, а потом в базе ищешь по критериям и подгружаешь из хранилища по названию
Навесить теги можно, но поиска по ним нет. Можно только получить информацию о файле, а в ней теги. Так что да, если нужен поиск, то хранить у себя в базе ссылки и всю нужную мета-информацию.
Обычно провайдер предоставляет доступ на запись по с3, а чтение - через хттп. Вся сидиэнка там. Поэтому приложению не нужно подключаться по с3, выкладКа через файловый менеджер
Это если речь про статику. А пользовательский контент (или сгенерированный специально для пользователя) надо всё-таки через S3 заливать.
Спасибо! А как получить ссылку на загруженный файл, чтобы сохранить себе в базу?
по сути это не нужно делать, достаточно хранить название файла, например, мы храним картинку кота в S3 по адресу /img/cat.jpg -> достаточно хранить только этот адрес. А сам домен, по которому живут картинки, у нас находится всегда в переменных окружения, и мы просто подставляем его и приклеиваем адрес картинки
@@artemshumeiko неделю назад как раз подрубил s3 от timeweb. долго ломал голову как же получить ссылку на файл после загрузки. В итоге тупо стал хранить название файла в бд и строить ссылку s3_link/file_name. сейчас вижу что это правильное решение)
@@artemshumeikoАртем, спасибо, если можно, уточняющий вопрос еще.
Я, загрузив файл в S3-хранилище, хочу затем пульнуть его в тг-канал как ссылку. Как мне сформировать эту ссылку, из какой переменной окружения взять первую часть url?
И обязательно ли для этого бакет должен быть публичным?
Расскажи про miniio
Надо было на пару дней раньше залить и отправить в сдек
разве если бд не на своем сервере, не будут ли задержки большие в запросах?
будут конечно, но хранить в базе файлы -- такое себе занятие. Нужно руками настраивать бэкапы отдельно файлов, отдельно данных в базе, настраивать шардирование, т.к. база не резиновая явно, а файлы много места занимают, выстраивать доступы до конкретных файлов, настраивать cdn для быстрой отдачи файлов по миру. Представьте, что нужно хранить паспортные данные, фото котиков, аватарки, сканы документов и доступ до всех файлов нужно выдавать конкретной команде/департаменту. Так еще чтобы можно было удобно в веб-панели ими управлять..
Вот тут и приходит на помощь S3 :)
@@artemshumeiko ну это да, просто насколько я знаю все стремятся задержки как можно больше сокращать, а такое обращение к внешним ьд помешает этому, а так спасибо!
никогда не храните файлы в БД. БД не для того придумана
@@shetiashcroft а где хранят файлы? даже интересно стало
@@паукшнюк-г8ъ на диске ну и S3 никто не отменял
Флешбеки из конца 90х, платный траффик 😮
Как же ты вовремя, лайк
а что будет с курсом по fasapi после мая? планируется ли его обновление?
после мая курс будет недоступен для продажи никогда, то есть не будет такого, что через несколько месяцев я вернусь с обновленной версией текущего курса
@@artemshumeiko а если знаешь только джанго с его DRF, то работы тоже хватает?
Я сейчас пишу сервис кое какой в тг, пока не знаю как мне может пригодится это видео, но на всякий случай закинул в папку с тестами))
что за тема в PyCharm
default
Только неделю назад подключат s3 от яндекса к джанге. Жаль это видео вышло только сейчас. До этого была проблема вообще понять как файлы то хранить
Спасибо за информацию, похоже на то же самое облако диски, только возможности поинтереснее, только вот паспортные данные я бы побоялся там хранить и прочею конфиденциальную информацию, сломают селектейл и все данные утекут, а для хранения личных данных отвечает компания которая продает услуги и берет эти данные под свою ответственность.
а где компании хранить такие данные?
свое s3 хранилище поднимать, бэкапить и поддерживать? звучит как куча денег впустую
@@artemshumeiko а какой ещё выход? Допустим те же банки хранят всё данные у себя на серверах, и имеют сертификацию PCI dss, и те же самые паспортные данные, когда их отправляют на s3 по факту нарушают закон о передачи данных 3лицам, если это не прописано в договоре оказания услуг, тут одно из двух такие данные всё же хранить у себя или иметь нужный договор оказания услуг, и то и то дорого может обойтись
так все s3 соответствуют 152 фз
если данные утекут, виноват провайдер
Что-то я не помню, чтобы хоть кто-то понёс реальное наказание за утечку персональных данных пользователей. У того же СДЕК-а уже как минимум второй раз крадут данные, и что-то тихо всё.
Но вообще можно подумать над end-to-end шифрованием: шифруешь файл на своём бекенде, на S3 загружаешь шифрованный файл. При необходимости скачиваешь и расшифровываешь тоже у себя на бекенде. Детали зависят от условий задачи.
За год в финтехе технически получил миддла, но если честно понимаю, что торопился. Твои видео как глоток воздуха) спокойно применяю на пет проекте с пользователями 100+ сотрудников, переписываю то что писал еще стажёром 😁
Супер, молодец.
А как же MinIO, для своих проектов самое то, да и в прод тоже пойдет. В остальных случаев, пусть об этом думает руководство...
Это что за 1 терабайт мне каждый месяц платить по 2500 рублей ? Так я могу просто купить себе диск, и поставить MinIO.
скиньте плиз где купить терабайт жесткого диска. Без шуток, мне казалось, это дорогое удовольствие сравнимое с s3
@@artemshumeiko я покупал два диска по 8 Тб, по 5000 тыщ каждый, и пользуюсь уже 4 года, прикинь, сколько денег бы ушло на ежемесячные платежи (дофига)
О, реклама селектел подъехала =)
ага качественым программистам реклама не нужна)) и тем более писать какие-то курсы..
Привет, круто, спасибо
s3 хранилище действительно очень актуально на рынке, и нужно знать не только разработчикам и архитекторам, но и другим специалистам (аналитикам, тестировщикам, девопсам).
Хорошо бы еще увидеть как можно с этим работать, на примере какой ни будь тривиальной задачи, например хранение фотографии профиля пользователя (на фронте загрузили, на бэкенде сохранили в s3, получили ссылку на этот файл в хранилище, сохранили ее в связке с пользователем и потом отображаем фото по ссылке из s3).
вот тебе и проект, чтобы потренироваться
Добра , подойдет ли S3 для доски объявлений(типо авито,юла)?
да, конечно
Стал умнее, узнал много новых русских слов. Больше понравилось "чанки")))
У меня коллега так называла контейнер для еды.
Не понял, какое отношение имеет этот s3 к чанковой загрузке видео, я же могу любую ссылку на видео вставить и оно тоже будет чанками грузиться, это вообще ответственность браузера и как он интерпретирует HTML, к вашему примеру это не имеет никакого отношения. Ну и по поводу хранилища, я тоже не понял, чем оно лучше обычного http протокола? сайт то тоже хранится на каком-то сервере, с бэкапами, к страницам настроены права доступа и т.п. В общем ни о чём, как по мне...
Спасибо за оочень качественный контент! 🔥
спасибо, выглядит просто и понятно! будем пробовать селектел
Отлично показано, наглядно!
Лучше локального рейда еще ничего не придумали)
Так а чем отличается S3 от облачного хранилища? Зачем было называть другим названием?
Облачное хранилище это просто общее название того что данные хранятся в облаке. А S3 это конкретный тип облачного хранилища.
Центр защиты персональных данных плачет в стороне при виде S3
ну хз, все подобные хранилища соответствуют 152-ФЗ
я работаю в Самокате и мы активно юзаем S3 Селектела, поэтому считаю, что все норм с S3 хранилищами
p.s. на прошлой работе тоже юзали S3 крупного российского провайдера
@@artemshumeiko все верно оно соответствует требованиям, но при построении информационной системы безопасности в компании тянет за собой много дорогостоящих нюансов
Спасибо
Отличный материал бро! Удивился почему у меня не был ыключен колокольчик на тебя. Исправил это упущение
❤️🔥
У меня в компе 4 диска, файлы хранятся зеркально на всех. Если у тебя 10гб хранилище, то проще хранить, как у меня. Вот если большие объемы то там уже надо думать.
10гб проще хранить в голове :)
Вопрос хранения - это всегда вопрос баланса между стоимостью и допустимыми рисками) RAID массив спасёт от отказа одного из дисков, но не спасёт от пожара, наводнения и других физических угроз серверу. Облачное хранение покрывает эти риски, но добавляет другие, вроде разорения твоего провайдера или санкций. Эти риски покрываются использованием нескольких облаков. В общем, всё зависит от того, какие данные нужно хранить.
Хранилище и хранилище. Как показывает опыт, никто лучше кроме вас не позаботиться о сохранности данных. У всех рано или поздно бывают факапы и за те копейки что стоит хранилище, никто ничего не восстановит. S3 увы, это никакая не волшебная палочка-выручалочка.
а вы что стали бы использовать?
@@artemshumeiko для начала локально хранить можно. Необходимость в сетевом хранилище возникает как только приложение начинает реплицироваться на несколько серверов, чтобы сделать его единым для всех. Вместо S3 может использоваться сетевой диск. В целом остаётся открытым вопрос резервного копирования содержимого такого хранилища.
Ага, облака)) облака надежды и вечные, поверьте свои данные третьим лицам)) если работаете над чем то серьезным то ничего не должно покидать ваш контур. Баловство все это, если не хуже.
3:59
Зачем это, если всё можно хранить на своём ПК? Купить отдельный диск, или два, если очень хочется.
речь про создание проекта, который работает 24/7
хайп? хабр?
на днях один инженер жаловался на поддержку selectel по s3. судя по тексту, челу не положили батареек в комплект, и его бэкапы распухли
Если смысл хранить на s3 личные фотографии вместо купленного места, например на том же яДиск?
не имеет, как пользователю удобнее использовать ядиск, мэил облако и т.п.
если говорим про работу с файлами через api, то s3 удобнее
Для чего нужен этот Пайтон? Ну серьёзно. Для фронта и бэка есть JavaScript. Для обработки высокопроизводительной си .
Дружище не заходи на этот канал больше
Разве можно хранить персональные данные россиян на s3?
да, все хранилища соответствуют 152 ФЗ о персональных данных
Хранить можно что угодно, но большие компании в 99,9999998% не дадут использовать ничего кроме своих серверов
На сервере такие аплоуды в таски наверное имеет смысл закидывать
Да! Технически всё красиво и может работать! Но для бизнеса это ж... 😅
Санкции не позволят обновить жесткие диски на s3 и данные нельзя будет восстановить.
чего?)
@@artemshumeiko я про отечественные сервисы
@@pom001 контрабанду никто не отменял) Сервисы останутся, просто в какой-то момент цена начнёт расти.
Прикол в том, что эти данные будут доступны selectel поэтому это нифига не безопасно, если их сломают, то и все хранилища будут сломаны...
Само видео интересное и хранилище классное, интересно а как самому такое создать...
не грузит видео больше копируйте все в рутюб