Amazon Elastic Container Service (Amazon ECS) упрощает запуск, масштабирование и обеспечение безопасности приложений на основе контейнеров Docker на AWS. Приложения, локально упакованные как контейнеры, будут развертываться и запускаться по той же схеме, как и контейнеры, управляемые Amazon ECS. При использовании Amazon ECS не требуется устанавливать, обслуживать и масштабировать собственную инфраструктуру для оркестрации контейнеров и управления кластерами. Данный сервис позволяет сосредоточиться на потребности в ресурсах и требованиях к доступности приложения на основе контейнеров.

Amazon ECS позволяет увеличивать количество контейнеров от одного до нескольких тысяч на сотнях инстансов, не усложняя при этом процедуру запуска приложения. Вы можете запускать что угодно: приложения, пакетные задания или микросервисы. Amazon ECS позволяет абстрагироваться от сложностей инфраструктуры и сосредоточиться на проектировании, создании и запуске контейнерных приложений.

При работе с Amazon ECS можно использовать для управления всей инфраструктурой AWS Fargate и заниматься только развертыванием контейнеров. Как вариант, можно оставить за собой полный контроль и видимость базового кластера серверов, от создания и удаления контейнеров Docker до просмотра подробной информации о состоянии кластера. Можно интегрировать и использовать свой собственный планировщик контейнеров или подключить Amazon ECS к существующему процессу доставки программного обеспечения (например, к системам непрерывной интеграции и доставки).

Поддержка AWS Fargate

В Amazon ECS можно использовать технологию AWS Fargate. При использовании AWS Fargate не требуется выбирать типы инстансов Amazon EC2, выделять и масштабировать кластеры, а также устанавливать исправления и обновления на каждый сервер. Нет необходимости продумывать стратегии размещения задач, такие как упаковка в контейнеры или распределение по узлам. Балансировка задач по зонам доступности выполняется автоматически. Fargate самостоятельно управляет доступностью контейнеров. Нужно только указать требования приложения и выбрать в консоли или интерфейсе командной строки тип запуска Fargate. После этого Fargate берет на себя все управление масштабированием и инфраструктурой для работы контейнеров.

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

Разработка

Поддержка Docker

Amazon ECS поддерживает Docker, предоставляя возможность запуска контейнеров Docker и управления ими. Развертывание и запуск в Amazon ECS приложений, упакованных в контейнер локально, не требует каких-либо изменений конфигурации.

Совместимость с контейнерами Windows

Amazon ECS позволяет управлять контейнерами Windows. Образ Windows Amazon Machine Image (AMI), оптимизированный для Amazon ECS, оптимизирует время запуска инстанса и контейнера и обеспечивает возможность просмотра производительности ЦПУ, использования памяти и метрик резервирования.

Локальная разработка

Интерфейс командной строки (CLI) Amazon ECS упрощает процесс локальной разработки, а также настройку и запуск контейнеров в Amazon ECS. Amazon ECS CLI поддерживает Docker Compose – инструмент с открытым исходным кодом для определения и запуска многоконтейнерных приложений. Вы можете применить одно и то же определение Compose для определения многоконтейнерного приложения как на компьютере для разработки, так и в рабочей среде. Интерфейс командной строки Amazon ECS предоставляется с открытым исходным кодом. Загрузить Amazon ECS CLI.

Поддержка репозитория

Amazon ECS можно использовать с любым репозиторием образов Docker, размещенным на стороннем хостинге, или с доступным частным реестром Docker, например Docker Hub или Amazon Elastic Container Registry (Amazon ECR). Необходимо только указать репозиторий в определении задания, а Amazon ECS будет извлекать для приложений подходящие образы.

Управление

Определения заданий

Amazon ECS позволяет легко определять задания с использованием декларативного шаблона JSON, называемого определением задания. С помощью определения задания можно указать для выполнения задания один или несколько контейнеров, в том числе соответствующий репозиторий и образ Docker, требования к памяти и процессору, к томам общих данных, а также к тому, как контейнеры будут связаны друг с другом. Из одного файла определения заданий, зарегистрированного в сервисе, можно запустить любое необходимое количество заданий. Файлы определения заданий позволяют также осуществлять контроль версий спецификации приложения.

Программное управление

Amazon ECS предоставляет набор простых действий API, позволяющих выполнять интеграцию и расширять возможности сервиса. Действия API позволяют создавать и удалять кластеры, регистрировать и отменять регистрацию заданий, запускать и прекращать работу контейнеров Docker, а также предоставлять подробные сведения о состоянии кластера и его инстансов. Кроме того, для выделения кластеров Amazon ECS, регистрации определений заданий и планирования работы контейнеров можно использовать AWS CloudFormation.

Развертывание контейнеров

Amazon ECS позволяет просто обновлять версии используемых контейнеров. Достаточно загрузить новую версию определения задания приложения, и планировщик Amazon ECS автоматически запустит новые контейнеры, использующие обновленный образ, и остановит контейнеры, использующие предыдущую версию. Amazon ECS автоматически регистрирует контейнеры и отменяет их регистрацию в связанном балансировщике Application Load Balancer.

Автоматическое восстановление контейнеров

Планировщик Amazon ECS будет автоматически восстанавливать работу неисправных контейнеров, чтобы гарантировать наличие необходимого количества контейнеров для поддержания работы приложения.

Планирование

Amazon ECS включает в себя несколько стратегий планирования, которые распределяют контейнеры в кластерах клиента, основываясь на указанных потребностях в ресурсах (например, ЦПУ или оперативной памяти), а также требованиях к доступности. Применяя подходящие стратегии планирования, можно планировать пакетные задания, приложения и сервисы с длительным периодом выполнения, а также процессы-демоны.

Планирование задач
Планирование задач Amazon ECS позволяет запускать процессы, которые выполняют определенные действия, а затем останавливаются (например, задания пакетной обработки). Планирование задач позволяет запускать задачи вручную, автоматически из очереди заданий либо через указанный промежуток времени.

Планирование сервиса
Планирование сервиса Amazon ECS позволяет запускать сервисы и приложения без сохранения состояния. Такая стратегия планирования обеспечивает постоянную работу определенного количества задач и их повторный запуск при сбое. Доступна проверка регистрации задач в балансировщике нагрузки Elastic Load Balancing и несколько типов проверки состояния запущенных задач на выбор.

Планирование демонов
Планирование демонов Amazon ECS автоматически запускает одну и ту же задачу на всех выбранных инстансах кластера ECS. Это упрощает запуск задач, которые обеспечивают функционал общего управления для сервиса, таких как ведение журналов, мониторинг или резервное копирование.

Размещение задач

Amazon ECS позволяет индивидуально настраивать размещение задач в кластере из инстансов EC2 на основании таких встроенных атрибутов, как тип инстанса и зона доступности, а также указанных пользователем специальных атрибутов. Можно использовать такие атрибуты, как environment = production для создания меток ресурсов, а затем применять вызовы API List для поиска соответствующих ресурсов либо API RunTask и CreateService для планирования задач на таких ресурсах.

Кроме того, Amazon ECS позволяет использовать стратегии размещения, такие как пакетирование или распределение, для более точного определения того, где размещать задачи. Сервис позволяет создавать цепочки политик для получения продвинутых возможностей размещения без единой строчки кода.

При типе запуска AWS Fargate политики размещения задач не используются.

Сетевая конфигурация и безопасность

Сетевая конфигурация задач

Amazon Elastic Container Service поддерживает сетевые технологии Docker и интегрирован с Amazon VPC для обеспечения изоляции контейнеров. Это позволяет контролировать, как контейнеры подключаются к другим сервисам и внешнему трафику. Amazon ECS позволяет выбрать один из четырех сетевых режимов работы контейнеров, предназначенных для различных сценариев использования.

Task Networking/awsvpc (Сетевая конфигурация задач/awsvpc)
В этом режиме каждому запущенному заданию ECS назначается эластичный сетевой интерфейс, который обеспечивает полноценную сетевую работу контейнеров в VPC, аналогичную их работе на инстансах EC2.

Bridge (Мост)
В этом режиме создается сетевой мост Linux, соединяющий между собой все контейнеры, которые работают на данном хосте виртуальной локальной сети и доступны через сетевое подключение хоста по умолчанию.

Host (Хост)
В этом режиме контейнеры добавляются непосредственно в сетевой стек хоста, в результате чего они оказываются доступны в сети данного хоста без изоляции.

None (Отсутствует)
В этом режиме внешний сетевой функционал контейнеров отключается.

Балансировка нагрузки

Amazon ECS интегрирован с Elastic Load Balancing, что позволяет распределять трафик между контейнерами с помощью балансировщиков Application Load Balancer или Network Load Balancer. Требуется только указать определение задачи и выбрать балансировщик нагрузки, после чего Amazon ECS начнет автоматически добавлять контейнеры в балансировщик нагрузки и удалять контейнеры из него. В определении задания можно указать динамический порт – в этом случае контейнеру, запланированному для инстанса Amazon EC2, будет передан неиспользуемый порт. Для совместного использования балансировщика нагрузки с несколькими сервисами можно также применять маршрутизацию на основе путей.

Обнаружение сервисов

Amazon ECS поддерживает обнаружение сервисов, что облегчает обнаружение и взаимное подключение контейнерных сервисов.

Amazon ECS ведет реестр имен сервисов с помощью API Auto Naming сервиса Amazon Route 53. Это позволяет ссылаться на сервисы в программном коде с использованием имен и создавать DNS-запросы для разрешения имени сервиса в конкретный адрес при исполнении.

В определении задания сервиса можно указать условия проверки работоспособности. В таком случае Amazon ECS будет возвращать при поиске сервисов только работающие адреса.

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

Amazon ECS дает возможность указать роль IAM для каждого задания ECS. Это позволяет назначить инстансам контейнера Amazon ECS роль с минимальными правами. При этом будет соблюдена политика доступа с минимальными привилегиями и предоставлена возможность раздельно управлять ролями инстанса и задания. Кроме того, можно использовать Amazon CloudWatch Logs, чтобы просмотреть роль IAM, которой назначена задача.

Мониторинг и ведение журналов

Мониторинг

Amazon ECS предоставляет возможности мониторинга контейнеров и кластеров с помощью Amazon CloudWatch. Это позволяет отслеживать среднее и совокупное использование ЦПУ и памяти запущенными заданиями, сгруппированными по определению задания, сервису или кластеру. Также можно установить предупреждения CloudWatch для оповещения о том, когда необходимо осуществить масштабирование контейнеров или кластеров в сторону увеличения или уменьшения.

Ведение логов

Amazon ECS позволяет записывать все вызовы API Amazon ECS и получать файлы журналов с помощью AWS CloudTrail. В журналы попадает следующая информация: данные оператора, совершившего вызов API, время вызова API, IP-адрес источника, совершившего вызов API, параметры запроса, а также элементы ответа, возвращенные сервисом Amazon ECS. CloudTrail предоставляет историю вызовов API, сделанных с помощью Консоли управления AWS, SDK и интерфейса командной строки AWS. Данный сервис позволяет проводить анализ безопасности и аудит соответствия требованиям, а также отслеживать изменения ресурсов.

Узнайте о ценах на Amazon ECS

Перейти на страницу цен
Готовы начать работу?
Регистрация
Есть вопросы?
Свяжитесь с нами