Amazon S3 представляет собой облачное хранилище данных, доступное в реальном времени через API Web-сервисов из любой точки Интернета. Используя этот API, вы можете хранить любое количество объектов, размер которых варьируется от 1 байта до 5 Гбайт, в более или менее плоском пространстве имен.
Важно не думать об Amazon S3 как о файловой системе. Я видел много случаев, когда люди наживали себе неприятности, когда воспринимали Amazon S3 таким образом. В первую очередь, Amazon S3 имеет двухуровневое пространство имен. На первом уровне вы имеете так называемые "корзины" или "ведра" (buckets). Их можно считать аналогом каталогов в файловой системе, если вам так нравится, потому что они содержат данные, которые вы помещаете в S3. Однако, в отличие от традиционных каталогов, вы не можете организовать их иерархически — корзины не допускают вложенности (иначе говоря, вы не можете создать корзину внутри корзины). Возможно, еще более важное значение имеет тот факт, что пространство имен корзин предоставлено в общий доступ всем клиентам Amazon. Поэтому вам необходимо особо позаботиться о том, чтобы имена ваших корзин не пересекались с именами других корзин. Проще говоря, не следует создавать корзины с именами наподобие "Documents".
Еще один важный момент, который следует иметь в виду, заключается в том, что служба Amazon S3 работает относительно медленно. В действительности эта служба работает очень быстро для сервиса, развернутого в Интернете, но если вы ожидаете, что она будет отвечать на ваши запросы так же быстро, как локальный жесткий диск или SAN, то вы будете глубоко разочарованы. Таким образом, использование Amazon S3 в качестве оперативного хранилища не слишком благоразумно.
Наконец, доступ к S3 осуществляется через Web-службы, а не через файловую систему или WebDAV (защищенный сетевой протокол высокого уровня, работающий поверх HTTP и обеспечивающий доступ к объектам и коллекциям). В результате этого приложения должны разрабатываться с учетом того, что они должны хранить данные в Amazon S3. Вероятно, еще важнее то, что вы не можете просто воспользоваться командой rsync для синхронизации каталога с S3 без специальных инструментов, которые применяют Amazon API и, таким образом, обходят ограничения S3.
Итак, мы разобрались с тем, чего не следует ожидать от Amazon S3 — а теперь рассмотрим, что мы можем ожидать от этой службы.
Amazon S3 позволяет поместить хранимые данные в облачную инфраструктуру и впоследствии при необходимости их извлечь. При этом вы можете быть практически полностью уверены в том, что извлеченные данные будут представлять собой единый и непротиворечивый блок информации. Ключевым преимуществом Amazon S3 является то, что вы можете сбрасывать и сбрасывать данные в Amazon S3, совершенно не беспокоясь о проблеме нехватки пространства для их хранения. Иначе говоря, для большинства пользователей S3 служит в качестве краткосрочного или долгосрочного хранилища резервных копий.