AWS Elastic Beanstalk (EB) – новый сервис от Amazon, который позволяет вам легко и не принужденно деплоить, масштабировать и управлять приложениями в облаке Amazon. Вы просто загружаете ваше приложение, а Elastic Beanstalk автоматически разбирается со всеми сопутствующими составляющими, предоставляя инстанс EC2, балансировщик нагрузки, автоматическое масштабирование, логинг и мониторинг. Тем не менее, вы не утрачиваете контроль над приложением и можете управлять всеми компанентами вручную. При всем при этом ЕБ бесплатно и вы платите только за ресурсы необходимые для работы приложения (ec2, scaling и т.д.). ЕБ поддерживает php 5.3 приложения на Apache, а так же Java приложения на Apache Tomcat каких-то версий.
Запуск сервера
Управление EB доступно через AWS Management Console и EB command line tool. Для наглядности разберем работу через веб-интерфейс. Он дружелюбно встречает нас предложением создать что-нибудь новенькое.
Выбираем среду для нашего приложения и URL, на котором хотим видеть наше будущее творение.
Еще немного внимания.
Пару минут ожидания, пока сервис подключит EC2 инстанс, Elastic Load Balancing и Auto Scaling, и workflow для нашего приложения готов.
Все вышеперечисленные действия можно проделать и из терминала, пользуясь EB command line tool (скачиваем ее, в комплекте получаем AWSDevTools-RepositorySetup скрипт, который пригодится нам немного позже). Для ее использования вам необходимо скачать библиотеку, создать файл с AWSAccessKeyId и AWSAccessKeyId. (Эти ключи можно получить странице Sequrity Credentials).
AWSAccessKeyId=Write your AWS access ID
AWSSecretKey=Write your AWS secret ID
и добавить путь к нему в .bash_profile
export AWS_CREDENTIAL_FILE=~/.ec2/elasticbeanstalk-cli/elasticbeanstalk-cli/credits
Убедиться в наличии работющего ruby и json-гема. А дальше читать документацию и нажимать на кнопки.
Создание приложения
Перейдем к более интересной, с точки зрения программиста, части – созданию приложения. Создадим локальный репозиторий git и закинем в него что-нибудь:
git add ./
git commit -m 'initial commit'
[master (root-commit) a4db9f9] initial commit
1 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 index.php
Сконфигурируем Git для деплоя нашего приложения. Для этого используется AWSDevTools-RepositorySetup скрипт, который мы скачали вместе с EB command line tool. В корне нашего приложения исполняем этот скрипт ./path/to/script/AWSDevTools-RepositorySetup.sh (после выполнения скрипт предательски молчит, но все должно быть в порядке) и конфигурируем Git:
git aws.config
AWS Access Key: AccessKey
AWS Secret Key: SecretKey
AWS Region [default to us-east-1]:
AWS Host [default to git.elasticbeanstalk.us-east-1.amazonaws.com]:
AWS Elastic Beanstalk Application: HelloEvercode
AWS Elastic Beanstalk Environment: development
Так же доступны другие команды, список и описание ниже:
(Стоит отметить, что если вы не создавали приложения а сразу решили пушить, то амазон создаст приложение за вас, а вот со средой получится затык “No Environment found for EnvironmentName = ‘development’.”. По этому, либо через веб-интерфейс, либо через консоль придется ее добавить).
Дальше выполняем git aws.push и в общем то все. Наше приложение в облаке:
Ну а дальше начинается полет фантазии: создание разных энвайроментов, ковыряние в логах и просмотр мониторингов. EB подзваляет без труда настроить как софтверную, так и железную составляющую. Одному Богу и инженерам Amazon известно, как работает эта черная магия, но все выглядит очень интересно и привлекательно. А сравнивая прайсы с похожими сервисами, которые занимаются собвсвенно говоря абсолютно тем же, но с прокладкой в виде себя, получаем экономию в 2-3 раза.
Больше информации и клевых штук можно найти на амазонах и в других интернетах.