2014-10-12 3 views
29

Я думаю о перераспределении моего статического веб-сайта на Amazon S3. Мне нужно автоматизировать развертывание, поэтому я искал API для таких задач. Я немного запутался в разных вариантах.Разница между s3cmd, boto и AWS CLI

Вопрос: В чем разница между s3cmd, библиотекой Python и AWS CLI?

ответ

34

s3cmd и AWS CLI - оба средства командной строки. Они хорошо подходят, если вы хотите выполнить сценарий развертывания с помощью сценариев оболочки (например, bash).

AWS CLI дает вам возможность простого копирования файлов с помощью команды «s3», которой должно быть достаточно для развертывания статического веб-сайта в ведро S3. Он также имеет некоторые небольшие преимущества, такие как предварительная установка на Amazon Linux, если это было то, где вы работали (это также easily installable through pip).

Одна команда AWS CLI, который может быть целесообразным, чтобы синхронизировать локальный каталог на ведро S3:

$ aws s3 sync . s3://mybucket 

Полная документация по этой команде: http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Edit: Как упомянуто @ Симон buchan в комментарии, команда aws s3api дает вам доступ к полному API S3, но его интерфейс более «сырой».

s3cmd поддерживает все, что делает AWS CLI, плюс добавляет еще несколько расширенных функций сверху, хотя я не уверен, что вам понадобится любая из них для ваших целей. Здесь вы можете увидеть все его команды: http://s3tools.org/usage

Установка s3cmd может быть немного более сложной, поскольку она не представляет собой пакетов для нее в любых основных репозиториях distros.

boto является библиотекой Python, и на самом деле является официальным SDK Python для AWS. CLI AWS, также написанный на Python, фактически использует часть библиотеки boto (botocore). Это было бы удобно, только если бы вы писали сценарии развертывания в Python. Существуют официальные SDK для других популярных языков (Java, PHP и т. Д.), Если вы предпочитаете: http://aws.amazon.com/tools/

Самая сырая форма доступа к S3 осуществляется через API REST AWS. В какой-то момент все построено на этом. Если вы считаете себя авантюристом, обратитесь к документации по S3 REST API: http://docs.aws.amazon.com/AmazonS3/latest/API/APIRest.html

+1

Есть ли тесты, сравнивающие скорость передачи данных с использованием s3cmd для awscli? – sandeepkunkunuru

+0

Есть официальные пакеты 's3cmd' для Ubuntu: http://packages.ubuntu.com/trusty/s3cmd – Daniel

+0

Также проверьте s4cmd. Несмотря на то, что у него нет всех функций s3cmd, его производительность, безусловно, лучше по сравнению с высокоскоростными соединениями (например, на EC2), поскольку он многопоточно связывает соединения. https://github.com/bloomreach/s4cmd – jlevy