Amazon Elastic Container Registry
Amazon Elastic Container Registry (Amazon ECR) — это полностью управляемый реестр контейнерных образов, предоставляемый в составе облачной платформы Amazon Web Services (AWS). ECR позволяет разработчикам и администраторам хранить, управлять и развёртывать образы Docker и образы, совместимые с Open Container Initiative (OCI), в безопасной и масштабируемой инфраструктуре AWS. Сервис интегрирован с другими компонентами AWS, такими как Amazon ECS, Amazon EKS и AWS Lambda, что упрощает процессы непрерывной интеграции и доставки (CI/CD).
История
Сервис Amazon ECR был анонсирован в ноябре 2015 года на конференции AWS re:Invent и стал доступен для всех пользователей AWS в декабре того же года. До появления ECR пользователи AWS были вынуждены использовать сторонние реестры контейнеров, такие как Docker Hub или собственные решения, развёрнутые на виртуальных машинах. ECR предложил встроенную интеграцию с экосистемой AWS, что снизило задержки при развёртывании и повысило безопасность за счёт использования IAM-политик.
В 2017 году была добавлена поддержка репликации образов между регионами AWS, а в 2019 году — функция сканирования уязвимостей на основе технологии Clair. В 2021 году ECR получил поддержку образов для архитектуры ARM, что было связано с ростом популярности процессоров AWS Graviton. По состоянию на 2025 год Amazon ECR остаётся одним из наиболее распространённых решений для хранения контейнерных образов в корпоративной среде.
Архитектура и принципы работы
Amazon ECR построен на базе распределённой объектной системы хранения Amazon S3, но предоставляет специализированный API для работы с контейнерными образами. Каждый образ хранится как набор слоёв, которые могут быть общими для нескольких образов, что экономит дисковое пространство. Пользователи взаимодействуют с ECR через стандартные инструменты командной строки (Docker CLI, Podman, containerd) или через AWS Management Console, AWS CLI и SDK.
Репозитории
ECR организует образы в репозитории — логические контейнеры, которые могут быть приватными или публичными. Публичные репозитории (Amazon ECR Public) доступны для всех пользователей без аутентификации, что позволяет распространять открытые образы. Приватные репозитории требуют авторизации через AWS Identity and Access Management (IAM). Каждый репозиторий имеет уникальный URI вида account-id.dkr.ecr.region.amazonaws.com/repository-name.
Аутентификация и авторизация
Для доступа к ECR используется токен авторизации, получаемый через AWS CLI командой aws ecr get-login-password. Этот токен передаётся в Docker командой docker login. IAM-политики позволяют гибко управлять правами: например, разрешить чтение образов только определённым ролям или запретить удаление тегов.
Ключевые возможности
Управление образами
ECR поддерживает версионирование образов через теги (tags) и уникальные цифровые идентификаторы (digest). Пользователи могут назначать теги, например latest, v1.0.0, или использовать семантическое версионирование. Сервис позволяет автоматически удалять старые образы на основе политик жизненного цикла, что предотвращает переполнение хранилища.
Сканирование на уязвимости
Встроенный механизм сканирования анализирует слои образа на наличие известных уязвимостей (CVE) на основе баз данных, обновляемых ежедневно. Сканирование может выполняться при каждой загрузке образа или по расписанию. Результаты отображаются в консоли AWS и могут быть интегрированы с AWS Security Hub и AWS Lambda для автоматического оповещения.
Репликация и крос-региональная доступность
ECR поддерживает репликацию образов между регионами AWS. Это позволяет уменьшить задержки при развёртывании в глобально распределённых приложениях и обеспечить отказоустойчивость. Репликация настраивается на уровне реестра и может быть как однонаправленной, так и двунаправленной.
Интеграция с CI/CD
ECR интегрируется с сервисами AWS CodePipeline, AWS CodeBuild и сторонними инструментами, такими как Jenkins, GitLab CI и GitHub Actions. При сборке образов в CodeBuild результат может автоматически загружаться в ECR. Это позволяет строить полностью автоматизированные конвейеры доставки.
Виды реестров
Amazon ECR предлагает два типа реестров:
- Приватный реестр — по умолчанию создаётся для каждого аккаунта AWS. Все образы в нём недоступны публично без явного разрешения. Используется для хранения проприетарного кода и конфиденциальных приложений.
- Публичный реестр — отдельный сервис Amazon ECR Public, запущенный в 2020 году. Позволяет публиковать образы с открытым исходным кодом. Примеры популярных публичных образов включают официальные образы от проектов nginx, Redis и Node.js.
Применение
Развёртывание микросервисов
ECR является основным хранилищем образов для сервисов оркестрации контейнеров AWS: Amazon ECS (Elastic Container Service) и Amazon EKS (Elastic Kubernetes Service). При создании задач (tasks) в ECS или подов в EKS образы загружаются непосредственно из ECR, что исключает необходимость в дополнительных прокси-серверах.
Бессерверные вычисления
Начиная с 2020 года, AWS Lambda поддерживает образы контейнеров до 10 ГБ, хранящиеся в ECR. Это позволяет запускать функции Lambda с произвольными зависимостями, включая системные библиотеки и большие модели машинного обучения.
Разработка и тестирование
Команды разработчиков используют ECR для хранения промежуточных сборок во время разработки. Интеграция с Git-репозиториями и системами CI/CD обеспечивает автоматическую загрузку образов после каждого коммита.
Ограничения и стоимость
Ограничения
- Максимальный размер образа в ECR — 10 ГБ.
- Максимальное количество тегов для одного образа — 50 000.
- Максимальное количество репозиториев на аккаунт — 10 000 (может быть увеличено по запросу).
- Частота запросов к API ограничена (burst limit — 1000 запросов в секунду на регион).
Стоимость
Amazon ECR взимает плату за хранение данных (в гигабайтах в месяц) и за передачу данных (в гигабайтах) при загрузке образов в интернет. Передача данных между сервисами AWS в пределах одного региона обычно бесплатна. Сканирование уязвимостей для бесплатного уровня включает 100 сканирований в месяц; далее взимается плата за каждое сканирование. Публичный реестр ECR Public не взимает плату за хранение, но передача данных тарифицируется.
Сравнение с альтернативами
Amazon ECR конкурирует с такими решениями, как Docker Hub, Google Container Registry (GCR), Azure Container Registry (ACR) и self-hosted реестрами (Harbor, Nexus). Ключевые отличия ECR:
- Интеграция с AWS — глубокое встраивание в IAM, CloudWatch, VPC и другие сервисы.
- Безопасность — поддержка шифрования на стороне сервера с использованием AWS KMS и политик IAM.
- Производительность — низкая задержка при развёртывании в той же сети AWS.
- Отсутствие ограничений на количество загрузок — в отличие от бесплатного тарифа Docker Hub, ECR не ограничивает скорость pull-запросов.
Критика
Несмотря на популярность, Amazon ECR имеет ряд недостатков, отмечаемых сообществом:
- Сложность настройки IAM-политик — для новичков может быть неочевидным, как правильно настроить права доступа, что приводит к ошибкам.
- Отсутствие встроенного интерфейса для просмотра слоёв — в отличие от Docker Hub, консоль AWS не позволяет детально просматривать содержимое каждого слоя образа.
- Зависимость от экосистемы AWS — миграция на другую платформу требует полного пересмотра процессов CI/CD.
- Стоимость при больших объёмах — для организаций, хранящих терабайты образов, затраты на ECR могут быть выше, чем на self-hosted решения.
Интересные факты
- Amazon ECR поддерживает образы для нескольких архитектур одновременно (multi-arch images), что позволяет развёртывать одно и то же приложение на x86 и ARM без дублирования.
- В 2022 году AWS объявила о поддержке образов для Windows Server в ECR, что расширило возможности для гибридных сред.
- ECR используется в качестве базового хранилища для Amazon SageMaker при обучении моделей машинного обучения: образы с окружением для обучения загружаются из ECR.
Источники
- AWS Documentation. «Amazon Elastic Container Registry User Guide». Amazon Web Services, 2024.
- AWS News Blog. «Introducing Amazon EC2 Container Registry». Amazon, 2015.
- AWS re:Invent 2020. «Amazon ECR Public: A Public Container Registry». Amazon, 2020.
- HashiCorp. «Terraform AWS Provider: aws_ecr_repository». HashiCorp Documentation, 2024.
- Docker Inc. «Docker Hub vs Amazon ECR: A Comparison». Docker Blog, 2022.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →