Amazon S3

Материал из Xgu.ru

Перейти к: навигация, поиск

Amazon S3 (Amazon Simple Storage Service) — служба по организации масштабируемого хранилища данных. Может использоваться как совместно с Amazon EC2, так и без него.

Данные хранятся в виде объектов (objects), которые организованы в букеты или коллекции (bucket). Размер одного объекта может находиться в диапазоне от 1 Байта до 5 ГБайт. Количество объектов в коллекции не ограничено.

  1. Максимальное количество букетов на одного пользователя — 100;
  2. Название букета должно быть уникальным в пределах всего S3;
  3. Букеты не могут быть вложенными;
  4. В имени букета могут присутствовать только базовые алфавитно-цифровые символы, точка и дефис. Использование пробелов и прочих символов запрещено.

Объекты, хранящиеся в 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 операций.

Итоговая сумма складывается из стоимости всех оказанных услуг.

Дополнительная информация:

Источник — «http://xgu.ru/wiki/Amazon_S3»