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. Для наглядности разберем работу через веб-интерфейс. Он дружелюбно встречает нас предложением создать что-нибудь новенькое.

35

Выбираем среду для нашего приложения и URL, на котором хотим видеть наше будущее творение.

36

Еще немного внимания.

36

Пару минут ожидания, пока сервис подключит 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

Так же доступны другие команды, список и описание ниже:

65

(Стоит отметить, что если вы не создавали приложения а сразу решили пушить, то амазон создаст приложение за вас, а вот со средой получится затык “No Environment found for EnvironmentName = ‘development’.”. По этому, либо через веб-интерфейс, либо через консоль придется ее добавить).

Дальше выполняем git aws.push и в общем то все. Наше приложение в облаке:

37

Ну а дальше начинается полет фантазии: создание разных энвайроментов, ковыряние в логах и просмотр мониторингов. EB подзваляет без труда настроить как софтверную, так и железную составляющую. Одному Богу и инженерам Amazon известно, как работает эта черная магия, но все выглядит очень интересно и привлекательно. А сравнивая прайсы с похожими сервисами, которые занимаются собвсвенно говоря абсолютно тем же, но с прокладкой в виде себя, получаем экономию в 2-3 раза.

Больше информации и клевых штук можно найти на амазонах и в других интернетах.