Amazon S3
Материал из Xgu.ru
Amazon S3 (Amazon Simple Storage Service) — служба по организации масштабируемого хранилища данных. Может использоваться как совместно с Amazon EC2, так и без него.
Данные хранятся в виде объектов (objects), которые организованы в букеты или коллекции (bucket). Размер одного объекта может находиться в диапазоне от 1 Байта до 5 ГБайт. Количество объектов в коллекции не ограничено.
- Максимальное количество букетов на одного пользователя — 100;
- Название букета должно быть уникальным в пределах всего S3;
- Букеты не могут быть вложенными;
- В имени букета могут присутствовать только базовые алфавитно-цифровые символы, точка и дефис. Использование пробелов и прочих символов запрещено.
Объекты, хранящиеся в Amazon S3, можно сделать общедоступными, а можно закрытыми и регулировать доступ к ним с помощью списков доступа. Общедоступные данные видны из сети по адресу: http://s3.amazonaws.com/bucket-name/object-name (возможно использование других URL).
Данные автоматически реплицируются по нескольким серверам, но не переходят границу региона. Это означает, что если вы создали объект в Европе, он не будет доступен в Северной Америке (естественно, речь идёт о доступности внутри службы Amazon).
Возможностей по работе с объектами S3 намного меньше чем при работе с обыкновенными файлами на диске:
- нельзя переименовать или переместить объект;
- для того чтобы изменить даже один байт внутри объекта, его нужно выгрузить, изменить, а потом загрузить назад на S3;
- нельзя возобновить прерванную загрузку файла на S3.
Некоторые особенности использования S3:
- IP-адреса S3-серверов периодически могут меняться, поэтому нужно не забывать использовать DNS-преобразование имён при доступе к ним; кэширование результатов преобразования не нужно делать на большой срок, рекомендуемое время кэширования — 5 минут;
- Изредка некоторые запросы к S3 могут не обрабатываться, вместо этого будет возвращаться ошибка "Internal Server Error"; это нормально, нужно быть готовым к этому, и в случае такой ошибки повторить запрос.
Работа с S3 выполняется через API, для использования которого разработаны библиотеки под все наиболее популярные языки программирования, в том числе Perl, Python, Java и другие. Есть сторонний набор программ s3tools, который позволяет использовать S3 прямо из командной строки. Программа s3cmd обеспечивает интерфейс командной строки к хранилищу, а программа s3fuse даёт возможность подмонтировать с помощью FUSE хранилище S3 локально.
Пример использования s3cmd:
~$ s3cmd ls s3://logix.cz-test Bucket 'logix.cz-test': 2008-01-19 01:46 120k s3://logix.cz-test/addrbook.xml 2008-11-14 01:46 32k s3://logix.cz-test/storage.jpg ~$ s3cmd get s3://logix.cz-test/addrbook.xml addressbook-2.xml Object s3://logix.cz-test/addrbook.xml saved as 'addressbook-2.xml' (123456 bytes) ~$ md5sum addressbook.xml addressbook-2.xml 39bcb6992e461b269b95b3bda303addf addressbook.xml 39bcb6992e461b269b95b3bda303addf addressbook-2.xml ~$ s3cmd rb s3://logix.cz-test ERROR: S3 error: 409 (Conflict): BucketNotEmpty ~$ s3cmd del s3://logix.cz-test/addrbook.xml s3://logix.cz-test/storage.jpg Object s3://logix.cz-test/addrbook.xml deleted Object s3://logix.cz-test/storage.jpg deleted ~$ s3cmd rb s3://logix.cz-test Bucket 'logix.cz-test' removed
Цена по работе с S3 складывается из нескольких составляющих: оцениваются все операции, которые выполняются с объектами, и отдельно оценивается трафик.
Сейчас цены такие (подробнее смотрите на сайте Amazon [1]):
- хранение: $0.150/GB;
- трафик, закачка на S3: пока беслпатно;
- трафик, скачка с S3: $0.15/GB;
- операции, все кроме скачки: $0.01 за 1000 операций;
- операции, скачка: $0.01 за 10000 операций.
Итоговая сумма складывается из стоимости всех оказанных услуг.
Дополнительная информация:
- Amazon Simple Storage Service (англ.) — документация по Amazon S3
- s3tools.org (англ.) — пакет программ s3tools