Amazon S3: обзор хранилища

Amazon Simple Storage Service (S3) — хранилище файлов любого типа, любого объема, с высокой доступностью и отказоустойчивостью. Оно разработано для хранения статического контента, пользовательских данных и бэкапов. Amazon S3 simple scheme

Сервис подходит для небольших, молодых проектов с несколькими тысячами файлов и сравнительно небольшим трафиком, ведь стоимость будет максимально низкой (порядка нескольких долларов в месяц).

Но с ростом стоимость будет пропорционально увеличиваться, нужно платить не только за загрузку и раздачу файлов, но также за трафик, запросы GET и POST.

Преимущества и недостатки

Главный недостаток S3 — высокая стоимость при загрузке и отдаче терабайтов данных.

Но и преимущества очевидные:

  • Надежность и безопасность — распределенные резервные копии данных (автоматически), поддержка SSL, шифрования, разрешения на доступ;
  • Высокая доступность — несколько регионов для увеличения скорости загрузки, гарантия доступности данных ;
  • Простота масштабирования — автоматическое увеличение объема по мере надобности;
  • Выдерживает любую нагрузку — резкие пики популярности не повлияют на доступность файлов;
  • Простота использования — веб-консоль, API, SDK и даже мобильное приложение.

Возможности

Весь цикл работы с сервисом ограничивается 5 действиями: S3 cycle

Все файлы (фото, видео, документы и т.д) хранятся в контейнерах (bucket). Самый простой способ создания новых bucket-ов — использовать веб-консоль Amazon S3. А так это реализуется средствами PHP:

$result = $client->createBucket([
    'ACL' => 'private',
    'Bucket' => 'test-bucket',
    'CreateBucketConfiguration' => [
    'LocationConstraint' => 'eu-central-1',
    ],
]);

# С указанием прав доступа, имени контейнера и региона

Также можно задействовать SDK для Ruby, Java и .NET (достаточно сложно и обширно), и curl в виде:

curl -v https://testbucket.s3.amazonaws.com/ \
     -H "Authorization: AWS4-HMAC-SHA256 \
         Credential=AKIAIOSFODNN7EXAMPLE/20160530/us-east-1/s3/aws4_request, \
         SignedHeaders=host;x-amz-content-sha256;x-amz-date, \
         Signature=182072eb53d85c36b2d791a1fa46a12d23454ec1e921b02075c23aee40166d5a" \
     -H "x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" \
     -H "x-amz-date: 20160530T124500Z"

# Создание нового контейнера с указанием учетных данных

Название контейнера может быть представлено в виде URL:

http://bucket.s3-aws-region.amazonaws.com


# Или

http://s3-aws-region.amazonaws.com/bucket

# Краткие названия регионов доступны в документации, по умолчанию US East (N. Virginia)

Утилиты командной строки

Для работы с S3 имеется достаточное количество 3rd party tools, один из лучших — консольный s3cmd для Ubuntu:

sudo aptitude install s3cmd

# Утилита доступна в системе aptitude

Прежде чем использовать s3cmd, нужно отредактировать конфигурационный файл ~/.s3cfg, добавив учетные данные S3. Затем утилита обеспечит упрощенное управление хранилищем:

s3cmd mb s3://newbucket							# создать контейнер newbucket

s3cmd rb s3://newbucket							# удалить пустой контейнер newbucket

s3cmd ls [s3://BUCKET[/PREFIX]]					# список файлов или корзин

s3cmd la										# список всех объектов во всех корзинах

s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]	# загрузить файл в корзину

s3cmd get s3://BUCKET/OBJECT LOCAL_FILE			# скачать файл

s3cmd del s3://BUCKET/OBJECT					# удалить файл

s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]		# синхронизировать каталог S3 с локальным каталогом
s3cmd sync s3://BUCKET[/PREFIX] LOCAL_DIR		# синхронизировать каталог S3 с локальным каталогом

s3cmd du [s3://BUCKET[/PREFIX]]					# показать объем файлов

s3cmd setacl s3://BUCKET[/OBJECT]				# изменить параметры доступа к объекту

s3cmd info s3://BUCKET[/OBJECT]				  # свойства объекта

# Все команды находятся в справке s3cmd --help

Похожее решение предоставляет и сам Amazon. Но AWS CLI более универсально и работает со всеми облачными сервисами компании:

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

# Скачивает пакет с корзины S3, распаковка и установка, требуется установленный Python

После установки также нужно настроить свой профиль:

$ /usr/local/bin/aws configure --profile test-bucket
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: aws-region
Default output format [None]: json

# Укажите свои учетные данные, если не указать профиль, то будет настроен основной

Утилита содержит большое количество опций и дополнительных функций.

Самое главное

Начните знакомство с Amazon S3 через веб-консоль — она даст наглядное представление вашего хранилища. В большинстве случаев ее будет достаточно для работы с сервисом. Для продвинутой работы с хранилищем доступны SDK и другие утилиты.


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень