Вопросы и ответы по AWS Elastic Beanstalk

Общие вопросы

AWS Elastic Beanstalk позволяет разработчикам еще проще и быстрее развертывать приложения в облаке AWS и управлять ими. Достаточно загрузить приложение, и Elastic Beanstalk автоматически выделит ресурсы, обеспечит балансировку нагрузки, автомасштабирование и мониторинг работоспособности приложения.

Для любого разработчика, который хочет развертывать приложения в облаке AWS за несколько минут и без лишних усилий управлять ими. Чтобы начать работу с сервисом, опыт работы с системами облачных вычислений не требуется. AWS Elastic Beanstalk поддерживает интернет-приложения, созданные на Java, .NET, PHP, Node.js, Python, Ruby, Go или с использованием Docker.

AWS Elastic Beanstalk поддерживает следующие языки программирования и стеки разработки:

Apache Tomcat для приложений Java;

Apache HTTP Server для приложений PHP;

Apache HTTP Server для приложений Python;

Nginx и Apache HTTP Server для приложений Node.js;

Passenger или Puma для приложений Ruby;

Microsoft IIS 7.5, 8.0 и 8.5 для приложений .NET

Java SE

Docker

Go

Для получения полного и актуального перечня поддерживаемых языков программирования и стеков разработки см. список поддерживаемых платформ.

Да. В AWS Elastic Beanstalk предусмотрена возможность расширения для поддержки в будущем большего числа стеков разработки и языков программирования. AWS совместно с разработчиками решений работает над созданием API и функций для предоставления дополнительных возможностей Elastic Beanstalk.

AWS Elastic Beanstalk автоматически выделяет ресурсы, осуществляет балансировку нагрузки, автоматическое масштабирование и развертывание приложений, позволяя создавать среду для запуска различных версий приложения. Достаточно загрузить код развертывания (например, файл WAR), а сервис AWS Elastic Beanstalk сделает все остальное. Средства AWS Toolkit for Visual Studio и AWS Toolkit for Eclipse позволяют выполнять развертывание приложений в AWS Elastic Beanstalk и управлять ими в привычной среде разработки. После запуска приложения Elastic Beanstalk автоматически выполняет такие задачи управления, как мониторинг, развертывание версий приложения и базовая проверка работоспособности, а также обеспечивает доступ к журналам. Сервис Elastic Beanstalk позволяет разработчикам сосредоточиться на создании приложений, освобождая их от выполнения рутинных задач, связанных с развертыванием, таких как выделение серверов, настройка балансировки нагрузки или масштабирования.

При работе с большинством существующих контейнеров для приложений и решений PaaS не требуется писать больших объемов кода, но одновременно они существенно ограничивают гибкость и управляемость. Разработчики вынуждены использовать возможности, предопределенные поставщиком решения, и не контролируют или почти не контролируют элементы инфраструктуры приложения. При работе с AWS Elastic Beanstalk разработчики полностью контролируют ресурсы AWS, на которых работают их приложения. Если вы решили взять в свои руки контроль над инфраструктурой или ее элементами, это легко сделать с помощью функций управления Elastic Beanstalk.

При работе с AWS Elastic Beanstalk можно:

выбрать операционную систему, соответствующую требованиям приложения (например, Amazon Linux или Windows Server 2016);

выбрать один из нескольких вариантов инстансов Amazon EC2, в том числе инстансы по требованию, зарезервированные инстансы и спотовые инстансы; 

выбрать подходящую базу данных и хранилище;

получить доступ к инстансам Amazon EC2 для неотложного и непосредственного устранения неполадок;

быстро повысить надежность приложения за счет его запуска в нескольких зонах доступности;

повысить безопасность приложения за счет использования протокола HTTPS в балансировщике нагрузки;

использовать встроенные средства мониторинга Amazon CloudWatch и получать уведомления о работоспособности приложений и других важных событиях;

настраивать параметры сервера приложений (например, настройки JVM) и передавать переменные окружения;

параллельно запускать в Amazon EC2 другие компоненты приложения, такие как сервис кэширования памяти;

получить доступ к файлам логов, не авторизуясь на серверах приложений.

При создании среды для работы приложения в AWS Elastic Beanstalk используются проверенные возможности и сервисы AWS, такие как Amazon EC2, Amazon RDS, Elastic Load Balancing, Auto Scaling, Amazon S3 и Amazon SNS. Текущая версия AWS Elastic Beanstalk работает с использованием образов AMI Amazon Linux или Windows Server 2019.

AWS Elastic Beanstalk поддерживает Java, .NET, PHP, Node.js, Python, Ruby, Go и Docker и прекрасно подходит для развертывания интернет‑приложений. При этом за счет открытой архитектуры сервиса приложения, которые не относятся к интернет‑приложениям, также могут быть развернуты с помощью Elastic Beanstalk. В ближайшем будущем планируется обеспечить поддержку других типов приложений и языков программирования. Подробнее см. в разделе о поддерживаемых платформах.

AWS Elastic Beanstalk работает на образах AMI с Amazon Linux и Windows Server AMI. Amazon Web Services осуществляет поддержку и обслуживание этих образов AMI. Они предоставляют стабильную, безопасную и высокопроизводительную среду облачных вычислений сервиса Amazon EC2.

Начало работы

Чтобы зарегистрироваться в сервисе AWS Elastic Beanstalk, нажмите кнопку «Зарегистрироваться» на странице описания Elastic Beanstalk. Чтобы получить доступ к этому сервису, требуется аккаунт Amazon Web Services. Если его еще нет, вам будет предложено создать его в начале процесса регистрации в сервисе AWS Elastic Beanstalk. После регистрации ознакомьтесь с Руководством по началу работы с AWS Elastic Beanstalk.

Для регистрации в сервисе AWS Elastic Beanstalk должен быть указан действительный номер телефона и адрес электронной почты (на случай, если нам потребуется связаться с вами). Процедура подтверждения номера телефона занимает всего несколько минут, в ходе нее на ваш номер поступит звонок, и вы будете должны ввести PIN-код с помощью кнопок своего телефона.

Для скорейшего начала работы с AWS Elastic Beanstalk воспользуйтесь руководством по началу работы с AWS Elastic Beanstalk, которое входит в техническую документацию. Уже через несколько минут вы сможете выполнить развертывание образца приложения для использования или загрузить собственное приложение.

Да. AWS Elastic Beanstalk содержит образец приложения, с помощью которого можно испытать работу сервиса и исследовать его возможности.

Базы данных и хранилище

Да. AWS Elastic Beanstalk сохраняет в Amazon S3 файлы приложения и серверные журналы, если таковые ведутся. Если вы используете Консоль управления AWS, AWS Toolkit for Visual Studio или AWS Toolkit for Eclipse, в аккаунте будет создана корзина Amazon S3, и загруженные файлы будут автоматически копироваться с локального клиента в хранилище Amazon S3. При желании можно настроить в Elastic Beanstalk ежечасное копирование серверных журналов в Amazon S3. Копирование включается с помощью настроек конфигурации среды.

Да. Amazon S3 можно использовать в качестве хранилища для приложения. Проще всего сделать это, включив пакет SDK AWS в состав файла развертывания приложения. Например, вы можете включить пакет AWS SDK for Java в файл WAR вашего приложения.

AWS Elastic Beanstalk не требует использования каких‑либо конкретных технологий хранения данных. Можно использовать Amazon Relational Database Service (Amazon RDS), Amazon DynamoDB или Microsoft SQL Server, Oracle и другие реляционные базы данных, работающие в Amazon EC2.

Elastic Beanstalk автоматически выделяет инстанс БД Amazon RDS. Информация для подключения к инстансу БД предоставляется приложению посредством переменных среды окружения. Подробнее о настройке инстансов БД RDS для своей среды см. в руководстве по Elastic Beanstalk для разработчиков.

При работе с AWS Elastic Beanstalk такой необходимости нет. Достаточно указать информацию для подключения в конфигурации среды. Извлекая строку подключения из кода приложения, можно просто настроить различные среды Elastic Beanstalk для работы с разными базами данных.

Безопасность

По умолчанию приложение находится в публичном доступе по адресу myapp.elasticbeanstalk.com. С помощью Amazon VPC можно выделить частный изолированный раздел приложения в заданной виртуальной сети. Эту виртуальную сеть можно сделать частной с помощью определенных правил группы безопасности, сетевых ACL и специальных таблиц маршрутизации. Можно также с легкостью настраивать доставку или блокировку входящего трафика (например, по SSH) к серверам приложений путем изменения настроек группы безопасности EC2.

Да, приложения можно запускать в VPC. Дополнительные сведения см. в руководстве по AWS Elastic Beanstalk для разработчиков.

Для получения дополнительной информации о безопасности AWS ознакомьтесь с документом «Amazon Web Services: обзор процессов обеспечения безопасности» и посетите наш Центр безопасности.

Да. Пользователи IAM с соответствующими разрешениями теперь могут работать с AWS Elastic Beanstalk.

IAM позволяет централизованно управлять пользователями и группами. Можно предоставлять определенным пользователям IAM доступ к AWS Elastic Beanstalk и выдавать разрешения доступа «только чтение» тем пользователям, у кого не должно быть возможности выполнять действия с ресурсами Elastic Beanstalk. Все действия пользователей в рамках вашего аккаунта объединяются в одном счете AWS.

Создавать пользователей IAM можно с помощью консоли IAM, интерфейса командной строки IAM или API IAM. По умолчанию у пользователей IAM нет доступа к сервисам AWS, пока им не будут предоставлены соответствующие разрешения.

Чтобы предоставить пользователям IAM доступ к сервисам, используйте политики. Чтобы упростить процесс предоставления доступа к AWS Elastic Beanstalk, для начала можно воспользоваться шаблонами политик в консоли IAM. Для Elastic Beanstalk предлагается два шаблона: доступ только для чтения и полный доступ. Шаблон доступа только для чтения обеспечивает доступ к ресурсам Elastic Beanstalk только для чтения. Шаблон полного доступа обеспечивает полный доступ ко всем операциям Elastic Beanstalk, а также разрешения на управление связанными ресурсами, такими как Elastic Load Balancing, Auto Scaling и Amazon S3. Для создания политик также можно воспользоваться AWS Policy Generator. Дополнительные сведения см. в руководстве по AWS Elastic Beanstalk для разработчиков.

Да. Существует возможность предоставлять или отменять разрешения на доступ к ресурсам AWS Elastic Beanstalk, таким как приложения, версии приложений и среды.

Все ресурсы, созданные пользователями IAM с правами аккаунта root, принадлежат этому аккаунту. Счет за них выставляется в аккаунте root.

У аккаунта с правами root имеется полный доступ ко всем средам AWS Elastic Beanstalk, созданным любым пользователем IAM этого аккаунта. Если использован шаблон Elastic Beanstalk, предоставляющий пользователю IAM доступ только для чтения, такой пользователь сможет просматривать все приложения, версии приложений, среды и любые связанные ресурсы в пределах аккаунта. Если вы используете шаблон Elastic Beanstalk, чтобы предоставить пользователю IAM полный доступ, этот пользователь сможет создавать, изменять и удалять любые ресурсы Elastic Beanstalk в рамках аккаунта.

Да. Пользователь IAM может войти в консоль AWS Elastic Beanstalk с помощью своего имени пользователя и пароля.

Да. Пользователь IAM с помощью своего ключа доступа и секретного ключа может выполнять операции посредством API Elastic Beanstalk.

Да. Пользователь IAM с помощью своего ключа доступа и секретного ключа может выполнять операции посредством интерфейса командной строки Elastic Beanstalk.

Управляемые обновления платформы

Вы можете настроить автоматическое обновление сред AWS Elastic Beanstalk до последней версии базовой платформы, на которой работает приложение, во время предусмотренного окна обслуживания. Elastic Beanstalk регулярно выпускает новые версии для поддерживаемых платформ (Java, PHP, Ruby, Node.js, Python, .NET, Go и Docker) с обновлениями операционных систем, веб-серверов, серверов приложений, языков и платформ программирования.

Чтобы Elastic Beanstalk автоматически управлял обновлениями платформы, нужно разрешить автоматические обновления платформы на вкладке «Configuration» (Настройка) в консоли Elastic Beanstalk или выполнить аналогичные операции с помощью интерфейса командной строки Elastic Beanstalk или API сервиса. После включения этой возможности можно настроить, какие типы обновлений будут разрешены и когда они будут выполняться.

AWS Elastic Beanstalk может автоматически выполнять установку новых исправлений и выполнять обновления до младших версий платформы. Elastic Beanstalk не будет автоматически выполнять обновления до основных версий платформы (например, с Java 7 Tomcat 7 до Java 8 Tomcat 8), так как это подразумевает обратно несовместимые изменения и требует дополнительного тестирования. В подобных случаях обновление необходимо запустить вручную.

Структура нумерации версий платформ AWS Elastic Beanstalk такова: ОСНОВНАЯ.ВТОРОСТЕПЕННАЯ.ИСПРАВЛЕНИЕ (например, 2.0.0). Увеличение чисел, составляющих номер версии, производится следующим образом.

ОСНОВНАЯ версия увеличивается, если есть несовместимые изменения.

ВТОРОСТЕПЕННАЯ версия увеличивается, если добавлены новые функциональные возможности и обеспечивается совместимость изменений.

Число в позиции ИСПРАВЛЕНИЕ увеличивается, если исправлены ошибки и обеспечивается совместимость изменений.

Обновление основных версий можно выполнить в любое время, используя консоль управления AWS Elastic Beanstalk, API сервиса или интерфейс командной строки. Есть несколько вариантов выполнения обновления основной версии.

Применить обновление локально, в существующей среде. См. в разделе «Обновление версии платформы среды Elastic Beanstalk».

Создать клон существующей среды на новой версии платформы. Подробнее см. в разделе «Клонирование среды».

Обновления выполняются с помощью механизма стабильного развертывания, который гарантирует, что никакие изменения не будут сделаны в существующей среде до тех пор, пока параллельно работающая группа инстансов Amazon EC2 с установленным обновлением не будет готова к тому, чтобы поменяться местами с существующими инстансами, которые впоследствии останавливаются. Кроме того, если система обеспечения работоспособности сервиса Elastic Beanstalk обнаружит проблемы во время обновления, трафик будет перенаправлен в существующую группу инстансов, так что последствия для конечных пользователей приложения будут минимальными.

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

Дополнительная плата за использование управляемых обновлений платформы не начисляется. Вы просто платите за дополнительные инстансы EC2, необходимые для обновления платформы и используемые во время обновления.

Окно обслуживания – это еженедельный временной интервал продолжительностью два часа, во время которого AWS Elastic Beanstalk запускает обновления платформы, если включено управляемое обновление платформы и доступна новая версия платформы. Например, если вы выберете окно обслуживания, которое начинается каждое воскресенье в 2 часа ночи, AWS Elastic Beanstalk будет запускать обновления платформы каждое воскресенье в интервале времени от 2 до 4 часов ночи. Важно отметить, что в зависимости от конфигурации ваших приложений обновления могут завершаться после окончания времени окна обслуживания.

Окно обслуживания определяется для каждой среды отдельно, поэтому есть возможность устанавливать различные окна обслуживания для разных приложений или компонентов приложения. Таким образом, если вы не хотите, чтобы несколько частей приложения обновлялись в одно и то же время, можно разнести такие обновления сред по времени. Если вы разрешили управляемое обновление платформы, но не указали окно обслуживания, для вашей среды будет назначено еженедельное двухчасовое окно обслуживания по умолчанию. Если вы хотите самостоятельно изменить время проведения обслуживания, можно отредактировать настройки управляемого обновления в Консоли управления AWS или с помощью API UpdateEnvironment.

Вы будете извещены о доступности новой версии платформы через Консоль управления AWS, с помощью объявлений в форуме или примечаний к выпуску.

Подробные сведения о различиях между версиями платформы можно найти на странице примечаний к выпуску AWS Elastic Beanstalk.

Единственная операция, возможная во время выполнения управляемого обновления платформы, это операция «отменить». При этом обновление немедленно прекращается и выполняется откат к предыдущей версии.

Ваша среда всегда будет обновляться до самой последней версии с учетом уровня обновлений, заданного вами (младшие плюс исправления или только исправления).

Подробные сведения о каждом управляемом обновлении платформы доступны на странице событий, они обозначены тегом типа события «MAINTENANCE».

Количество поддерживаемых выпусков новых версий в течение года меняется в зависимости от частоты и содержимого выпусков и исправлений, публикуемых поставщиком языка/платформы программирования или командой разработчиков ядра, а также результатов детальных исследований этих выпусков и исправлений нашей технической службой БД.

Поддержка AWS Graviton

Чтобы развернуть приложение с процессорами на базе arm64 в консоли Elastic Beanstalk, необходимо выбрать архитектуру процессора и тип инстанса на вкладке ресурсов в разделе «Настройка дополнительных параметров».

Инструкции по развертыванию приложения с помощью Elastic Beanstalk CLI, AWS CLI, CFN или AWS CDK см. в Руководстве для разработчиков Elastic Beanstalk.

Если ваши рабочие нагрузки выполнены на интерпретируемом языке программирования, таком как Node.js, Python, Tomcat, PHP или Ruby, то для работы с Graviton повторная компиляция не требуется. При использовании Go или .Net Core необходимо обновить команду сборки для инстанса типа arm64. Кроме того, нужно повторно компилировать двоичные зависимости или использовать совместимую с arm64 версию двоичных зависимостей. В случае использования Docker образ должен быть многоархитектурным и поддерживать развертывание как x86, так и arm64.

Elastic Beanstalk поддерживает Graviton на базе 64-битной ОС Amazon Linux 2 для большого количества платформ и ветвей. Полный список см. в документации.

Переместив рабочие нагрузки на Graviton, вы получите преимущество повышенной производительности и низкой стоимости в следующих примерах: рабочие нагрузки на базе Linux, созданные в основном с помощью открытого исходного кода; контейнерные и микросервисные приложения, таких как Docker и MC Docker; приложения на переносимом языке программирования (Java, Python, .NET Core, node.js и PHP); приложения Compiled C/C++, Rust или Go; рабочие нагрузки .NET Core (v3.1+) на базе Linux; многопоточные рабочие нагрузки; рабочие нагрузки, требующие асимметричного доступа к памяти (NUMA); разработка и тестирование программного обеспечения для arm64.

Оплата

Дополнительная плата за AWS Elastic Beanstalk не взимается. Оплате подлежат только ресурсы AWS, необходимые для хранения и работы приложений.

Вы платите только за то, что используете, без минимальных платежей за ресурсы AWS. Информацию о ценах на сервис Amazon EC2 см. в разделе цен на странице описания EC2. Информацию о ценах на сервис Amazon S3 см. в разделе цен на странице описания S3. С помощью простого калькулятора AWS вы можете оценить сумму счета для приложений разных размеров.

Расходы за текущий расчетный период можно в любое время просмотреть на сайте Amazon Web Services, войдя в аккаунт Amazon Web Services и нажав на пункт «Account Activity» (История аккаунта) в разделе «Your Web Services Account» (Ваш аккаунт AWS).

Поддержка

Да. Сервис AWS Support охватывает вопросы, связанные с использованием AWS Elastic Beanstalk. Подробные сведения и информацию о ценах см. на странице AWS Support.

В разработке приложений вам поможет обширная база знаний сообщества AWS, которой вы сможете воспользоваться, посетив форум AWS Elastic Beanstalk.