Открыть сервис

Amazon ECR

Amazon Elastic Container Registry (Amazon ECR) — это полностью управляемый реестр контейнерных образов, предоставляемый по модели облачных вычислений (SaaS) компанией Amazon Web Services (AWS). ECR предназначен для хранения, управления и развёртывания образов Docker и образов, совместимых с Open Container Initiative (OCI), обеспечивая их безопасное распространение в инфраструктуре AWS и за её пределами. Сервис интегрирован с другими компонентами экосистемы AWS, такими как Amazon ECS, Amazon EKS, AWS Lambda и AWS Fargate, что позволяет автоматизировать сборку, тестирование и развёртывание приложений в контейнерах.

История и развитие

Amazon ECR был анонсирован на конференции AWS re:Invent в ноябре 2015 года и стал доступен в декабре того же года. Разработка сервиса была ответом на растущую популярность контейнеризации и необходимость в надёжном, масштабируемом и безопасном реестре образов, встроенном в облачную платформу AWS. До появления ECR пользователи AWS были вынуждены использовать сторонние реестры, такие как Docker Hub, или развёртывать собственные решения на базе Docker Registry, что требовало дополнительных затрат на управление и обеспечение безопасности.

В 2016 году ECR получил поддержку шифрования данных в покое с использованием AWS Key Management Service (KMS). В 2017 году была добавлена интеграция с AWS Identity and Access Management (IAM) для детального контроля доступа. В 2018 году появилась функция сканирования образов на уязвимости (Amazon ECR Image Scanning), основанная на технологиях компаний Twistlock (приобретена Palo Alto Networks) и Aqua Security. В 2019 году ECR начал поддерживать образы, совместимые с OCI, и репликацию между регионами. В 2021 году была внедрена поддержка публичных реестров (Amazon ECR Public Gallery), позволяющая разработчикам публиковать образы для всеобщего доступа. В 2023 году ECR получил поддержку автоматического сканирования образов при загрузке и улучшенные механизмы проверки целостности с использованием контрольных сумм.

Архитектура и принципы работы

Amazon ECR работает по модели «реестр — репозиторий — образ». Пользователь создаёт реестр (registry) в определённом регионе AWS, внутри которого размещаются репозитории (repositories) — логические контейнеры для хранения образов. Каждый репозиторий может содержать несколько версий одного образа, идентифицируемых тегами (tags) или цифровыми хэшами (digest). Образы хранятся в виде слоёв (layers), которые сжимаются и шифруются перед сохранением в хранилище Amazon S3, используемом ECR в качестве бэкенда.

Доступ к образу осуществляется через стандартный протокол Docker Registry HTTP API V2. Для аутентификации используется механизм на основе IAM: пользователь или сервис получает временный токен через команду aws ecr get-login-password, который затем передаётся в Docker CLI (docker login). Альтернативно, аутентификация может выполняться через AWS CLI или SDK. После аутентификации пользователь может выполнять операции docker push, docker pull, docker tag и другие.

Ключевые характеристики и возможности

Управление доступом и безопасность

Amazon ECR использует политики IAM для управления доступом на уровне реестра, репозитория и отдельных образов. Политики могут определять, кто имеет право выполнять операции чтения, записи, удаления или сканирования. Дополнительно поддерживается шифрование данных в покое (по умолчанию с использованием ключей AWS, либо пользовательских ключей через KMS) и шифрование данных в пути (TLS 1.2/1.3). Для проверки целостности образов ECR вычисляет и хранит SHA256-хэши каждого слоя.

Сканирование образов на уязвимости

Встроенный механизм сканирования (Amazon ECR Image Scanning) автоматически проверяет образы на известные уязвимости в операционной системе и библиотеках прикладного уровня. Сканирование может выполняться при каждой загрузке образа (push) или по расписанию. Результаты сканирования включают перечень уязвимостей с указанием их степени критичности (Critical, High, Medium, Low) и ссылки на базы данных CVE (Common Vulnerabilities and Exposures). Сканирование доступно как для частных, так и для публичных реестров.

Репликация и многорегиональность

ECR поддерживает кросс-региональную репликацию (Cross-Region Replication), позволяющую автоматически копировать образы из одного региона AWS в другой. Это ускоряет развёртывание приложений в глобальной инфраструктуре и повышает отказоустойчивость. Репликация настраивается на уровне реестра и может быть фильтрована по тегам или репозиториям.

Интеграция с CI/CD

Amazon ECR глубоко интегрирован с сервисами AWS для непрерывной интеграции и доставки: AWS CodePipeline, AWS CodeBuild, AWS CodeDeploy. Например, при изменении кода в репозитории AWS CodeCommit автоматически запускается сборка образа в AWS CodeBuild, после чего образ загружается в ECR и развёртывается в Amazon ECS или Amazon EKS. Также поддерживается интеграция с Jenkins, GitLab CI и другими популярными инструментами через стандартные Docker-команды.

Публичные реестры

Amazon ECR Public Gallery — это бесплатный сервис для размещения публичных образов, аналогичный Docker Hub. Он позволяет разработчикам публиковать образы с открытым исходным кодом, а пользователям — скачивать их без аутентификации. Публичный реестр поддерживает те же функции безопасности и сканирования, что и частный.

Виды реестров и репозиториев

Amazon ECR различает два типа реестров:

  • Частный реестр (Private Registry) — используется для хранения образов, доступ к которым ограничен политиками IAM. По умолчанию каждый аккаунт AWS имеет один частный реестр на регион.
  • Публичный реестр (Public Registry) — предназначен для образов, доступных всем пользователям интернета. Публичные образы могут быть загружены только после настройки политик доступа.

Репозитории внутри реестра могут быть:

  • Приватными — доступ к образу разрешён только авторизованным пользователям.
  • Публичными — доступ к образу разрешён всем (в рамках публичного реестра).

Применение

Amazon ECR широко используется в следующих сценариях:

  • Развёртывание микросервисов — образы каждого микросервиса хранятся в отдельных репозиториях, что упрощает управление версиями и откат к предыдущим версиям.
  • CI/CD-пайплайны — автоматическая сборка и загрузка образов после каждого коммита в репозиторий исходного кода.
  • Безсерверные вычисления — образы для AWS Lambda (начиная с поддержки контейнеров в 2020 году) могут храниться в ECR и загружаться при необходимости.
  • Гибридные и мультиоблачные среды — образы могут быть реплицированы в несколько регионов или выгружены для использования в локальных кластерах Kubernetes через инструменты вроде docker pull и crictl.
  • Обучение и тестирование — публичные образы с готовыми средами (например, TensorFlow, PyTorch) доступны через Amazon ECR Public Gallery.

Сравнение с альтернативами

ПараметрAmazon ECRDocker HubGoogle Artifact RegistryAzure Container Registry
Модель управленияПолностью управляемыйУправляемый (с ограничениями для бесплатных аккаунтов)Полностью управляемыйПолностью управляемый
Интеграция с облакомГлубокая интеграция с AWSОграниченнаяГлубокая интеграция с GCPГлубокая интеграция с Azure
Сканирование уязвимостейВстроенноеТолько для платных подписокВстроенноеВстроенное
РепликацияКросс-региональнаяОтсутствуетКросс-региональнаяКросс-региональная
ЦенообразованиеПлата за хранение (S3) + передача данныхБесплатный лимит, затем платаПлата за хранение + операцииПлата за хранение + операции

Ограничения и критика

Несмотря на широкие возможности, Amazon ECR имеет ряд ограничений. Во-первых, сервис привязан к экосистеме AWS: для использования ECR за пределами облака требуется дополнительная настройка аутентификации и сетевого доступа, что может быть неудобно в мультиоблачных сценариях. Во-вторых, стоимость хранения образов может быть выше по сравнению с Docker Hub для небольших проектов, особенно при частых загрузках и скачиваниях. В-третьих, сканирование уязвимостей не всегда охватывает все возможные библиотеки (например, Go-модули или Java-зависимости), а результаты могут содержать ложные срабатывания. Кроме того, ECR не поддерживает встроенные механизмы подписывания образов (content trust), хотя это можно реализовать через сторонние инструменты, такие как Notary или Cosign.

Источники

  • AWS Documentation: Amazon Elastic Container Registry User Guide
  • AWS re:Invent 2015 Launch Announcement
  • Amazon ECR Image Scanning Documentation
  • Amazon ECR Public Gallery Documentation
  • AWS Well-Architected Framework — Security Pillar
  • OCI Distribution Specification v1.0

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →