Когда пользователи загружают файлы в ваше приложение, оно загружается на S3.Затем ваше приложение сохраняет уникальный URL-адрес S3 для этого файла в вашей базе данных.Если вы не использовали S3, вы бы сделали то же самое, за исключением ссылки на файл на вашем локальном диске.
Затем, когда вы захотите передать файл кому-либо, вы можете: a)пусть ваше приложение получит файл из S3 и затем предоставит его вашему пользователю, или b) предоставит URL-адрес S3 пользователю, и они смогут сами загрузить его из S3.То, что вы используете, будет зависеть от ваших конкретных требований, но вариант (b), как правило, лучше, поскольку он позволяет Amazon выполнять всю работу по загрузке.(b) даже работает, если у вас есть личные файлы, которые не являются общедоступными (например, загружаемые пакеты), поскольку вы можете предоставить временный доступ с URL-адресами, срок действия которых истекает.
Во многих случаях S3 будет дороже, чемпросто используя локальное хранилище.Цены на хранилища Amazon конкурентоспособны с розничными ценами на жесткие диски.Но вдобавок к этому вы также платите плату за пропускную способность S3, которая на самом деле может быть довольно дорогой.Если вы выбираете S3, потому что это дешево, я думаю, вы выбираете его по неправильным причинам.Вы должны выбрать S3, потому что он масштабируется, отказоустойчив, и вам никогда не придется думать о расширении хранилища.