Процедура запуска новой виртуальной машины может испугать обилием настроек по сравнению с тем же DigitalOcean. В этом разделе рассмотрим создание VPS по требованию.
AMI (Amazon Machine Image) - обычный образ виртуальной машины. Вы можете воспользоваться уже преднастроенными (Quick Start), среди которых есть Red Hat, SUSE, Ubuntu, Windows Server… Это самый популярный выбор для того, чтобы начать установку с нуля. Отдельно упомяну Amazon Linux - это linux от AWS на базе Red hat, оптимизированный для работы с AWS (странно, да?)
В разделе My AMIs вы найдёте образы, сделанные вручную. Так быстрее всего восстановить сохранённое состояние уже существующей машины, либо заменить pem-ключ.
На AWS Marketplace можно найти AMI с предустановленными сервисами тип Jenkins или GitLab. Многие из них бесплатны и предоставляются компанией, которая разрабатывает данное ПО. Тот же Debian отсутствует среди преднастроенных, однако в магазине есть образы для 8 и 9 версии. Kali Linux, OpenVPN, CentOS, WordPress, Redmine - больше не надо тратить время на их настройку.
На этом шаге необходимо определиться с “железной” составляющей вашей виртуальной машины, а именно с типом. Полный список типов я приводил чуть раньше. В рамках бесплатного обслуживания вам предоставляется один инстанс t2.micro, с ценами же на остальные можно ознакомиться здесь. В принципе, уже на этом шаге можно нажать “Review and Launch” и перейти к самому последнему шагу - остальные параметры будут выставлены автоматически (никаких правил для файервола, 8Gb EBS, публичный IP исходя из настроек VPC). Но я бы хотел рассмотреть подробно все пункты.
При запуске новой виртуалки есть возможность указать некоторые дополнительный параметры. Например:
Number of instances - количество запускаемых инстансов (а также следует ли их расположить в рамках Auto Scaling Group)
Purchasing option - выставить запрос о создании инстанса на торги. Вы указываете максимальную цену, а также время, в течении которого предложение действительно. Как только ваша стоимость окажется выше той, что предлагает Amazon, виртуальная машина запустится; окажется меньше - остановится. Тестовые (t2) заказывать нельзя, т.к. у них плавающая вычислительная способность, и Amazon их утилизирует по полной, так что минимальный тип - c4.large.
Network и Subnet - настройки сети. Напомню, что для каждого проекта хорошо бы использовать отдельный VPC; что же касается subnet - то этот параметр определяет в каком датацентре выделять мощности.
IAM Role - позволяет назначить машине некоторую роль, ключи от которой будут автоматически заполнены в файловой системе. Подробнее можно прочитать в разделе про IAM.
Shutdown behavior - определяет что делать при команде остановки: только останавливать инстанс, либо же полностью его удалять.
Enable termination protection - а эта галочка как раз запрещает удаление инстанса. Это будет невозможно ни через AWS CLI, ни через AWS Console.
Monitoring - платный мониторинг, подробнее описывается в разделе CloudWatch.
Tenancy - запуск виртуалки на изолированном физическом сервере. На этот же физический сервер можно поместить несколько виртуалок. Дорого, но необходимо по некоторым законам (зарубежным).
Включённый Enable termination protection является более приоритетным по отношению к Shutdown behavior = terminate. В таком случае при остановке машины она будет только остановлена, но не удалена. При попытке удаления будет показано такое окно с требованием отключить защиту:
Неотъемлимый атрибут любой виртуальной машины - её файловая система. Если вам нужно несколько разделов, то их можно добавить именно на этом шаге.
Образ Ubuntu занимает примерно 1 Gb, Так что раздел меньше этого размера подключить не получится, а вот больше - всегда запросто. Так что рекомендую ограничиться неким минимумом в 5 Gb. Расширить вы всегда сможете, создав новый инстанс из резервной копии этого, а вот уменьшить - весьма проблематично. В интернете есть множество рекомендаций на эту тему, но ни одна из них не работает. Ещё одна причина - за дисковое пространство и бэкапы платить придётся отдельной строкой, так что здесь можно немного сэкономить.
Обращаю внимание на галочку Delete on Termination. Т.к. для Amazon EC2 и EBS - 2 разные сущности, то и удалять их надо тоже по отдельности. Эта настройка позволяет не забыть об удалении диска для машины.
Теги становятся важной частью инфраструктуры на AWS при увеличении количества ресурсов, так что я бы рекомендовал заполнять их с самого начала. По сути это произвольные записи вида key-value, например, в скриншоте видно, что создаваемый инстанс относится к проекту GeoPuzzle и выполняет роль web-сервера. Также можно указывать версию ПО и любые другие комментарии, по которым может вестись поиск. При правильной расстановке тегов, можно быстро узнать во сколько обходится тот или иной проект, найти все инстансы с устаревшим фреймворком и т.п. Я описал лишь только пару примеров, которые использовал сам.
На этом шаге настраивается так называемая Security Group - файервол для конкретной машины. Ни к чему веб-серверу держать кучу открытых портов. На скриншоте приведена минимальная конфигурация для такой VPS: порты http/https и ssh. Я предпочитаю создавать их в этом разделе, но никто не мешает завести новую на этом шаге.
Это последний экран для проверки всех параметров. Amazon предлагает ещё раз пробежаться и убедиться, что всё в порядке. После клика на кнопку “Launch”, появится ещё одно окно с выбором pem-ключа для доступа, здесь же можно и создать новую пару. Будьте аккуратны с ними, т.к. повторно скачать уже не получится (однако, если вы потеряли pem-файл, то можно снять образ с уже существующей машины и запустить с новым ключом).
После этого шага виртуалка начнёт создаваться, и будет готова где-то через минуту. Подключиться к ней можно через ssh (для Ubuntu AMI): ssh -i ~/.ssh/geopuzzle.pem ubuntu@52.214.126.115