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

Amazon Machine Image

Amazon Machine Image (AMI) — это шаблон, содержащий конфигурацию операционной системы, программного обеспечения и данных, используемый для создания виртуальных серверов (экземпляров) в облачной платформе Amazon Web Services (AWS). AMI представляет собой единицу развёртывания, которая определяет начальное состояние экземпляра, включая операционную систему (например, Linux, Windows), установленные приложения, настройки безопасности, библиотеки и файлы данных. Каждый экземпляр в AWS создаётся на основе конкретного AMI, что обеспечивает повторяемость и стандартизацию развёртывания.

История

Концепция образов машин (machine images) возникла в контексте виртуализации и облачных вычислений. AWS, запущенная Amazon в 2006 году, представила AMI как часть своей инфраструктуры Elastic Compute Cloud (EC2). Первоначально AMI были ориентированы на использование с операционной системой Linux, но вскоре были добавлены образы для Windows Server. С развитием AWS появились публичные AMI, предоставляемые самой Amazon, а также сторонними разработчиками и сообществом. В 2010-х годах были внедрены механизмы автоматизации создания AMI, такие как AWS Systems Manager и Packer, что упростило процесс обновления и управления образами.

Структура и компоненты

AMI состоит из нескольких ключевых компонентов, которые определяют его функциональность и совместимость:

  • Корневой том (Root Volume): основной том хранения, содержащий операционную систему и все необходимые файлы. Корневой том может быть создан на основе Amazon Elastic Block Store (EBS) или экземплярного хранилища (instance store). В случае EBS том сохраняется независимо от экземпляра, что позволяет легко создавать резервные копии и восстанавливать образы.
  • Блочные устройства (Block Device Mapping): список томов хранения, которые будут подключены к экземпляру при его запуске. Это могут быть дополнительные тома EBS или тома экземплярного хранилища.
  • Метаданные: информация о AMI, включая его идентификатор (AMI ID), архитектуру (x86_64, arm64), тип виртуализации (паравиртуализация или аппаратная виртуализация), а также разрешения на доступ (публичный, приватный, общий с определёнными аккаунтами).
  • Разрешения (Permissions): определяют, кто может использовать AMI для запуска экземпляров. AMI могут быть публичными (доступны всем пользователям AWS), приватными (доступны только владельцу) или общими с выбранными аккаунтами.

Классификация AMI

AMI классифицируются по нескольким признакам, включая источник, операционную систему и тип виртуализации.

По источнику

  • Публичные AMI (Public AMI): предоставляются Amazon, партнёрами или сообществом. Они доступны всем пользователям AWS и часто включают предустановленные конфигурации, такие как Amazon Linux, Ubuntu, Windows Server, Red Hat Enterprise Linux.
  • Приватные AMI (Private AMI): создаются пользователем для собственных нужд. Они не видны другим аккаунтам и используются для стандартизации внутренних развёртываний.
  • Рыночные AMI (AWS Marketplace AMI): распространяются через AWS Marketplace. Они могут включать коммерческое программное обеспечение, требующее лицензирования, например, образы с предустановленными базами данных или приложениями.

По операционной системе

  • Linux-образы: наиболее распространённые, включают дистрибутивы Amazon Linux, Ubuntu, CentOS, Debian, RHEL, SUSE. Они поддерживают различные архитектуры, включая x86_64 и ARM (Graviton).
  • Windows-образы: включают Windows Server (2012, 2016, 2019, 2022) и Windows 10/11 (для десктопных сценариев). Требуют лицензирования, которое оплачивается по модели «плата за использование» (per-hour).
  • Специализированные образы: могут включать операционные системы для специфических задач, например, FreeBSD, OpenBSD, или образы с предустановленным программным обеспечением (например, SAP, Oracle).

По типу виртуализации

  • Паравиртуализация (PV): устаревший тип, при котором операционная система взаимодействует с гипервизором через специальные драйверы. Используется в старых AMI.
  • Аппаратная виртуализация (HVM): современный тип, обеспечивающий полную изоляцию и поддержку всех функций EC2, включая ускоренные сетевые интерфейсы и GPU. Большинство текущих AMI используют HVM.

Создание и управление AMI

Создание AMI выполняется на основе существующего экземпляра EC2. Процесс включает:

  1. Подготовка экземпляра: установка необходимого программного обеспечения, настройка конфигураций, удаление временных файлов и уникальных идентификаторов (например, SSH-ключей, хостовых имён).
  2. Создание образа: через консоль AWS, CLI или API выполняется команда CreateImage. AWS создаёт снимок (snapshot) корневого тома EBS и сохраняет его как AMI. В процессе экземпляр может быть временно остановлен для обеспечения целостности данных.
  3. Регистрация AMI: после создания AMI регистрируется в регионе AWS, получая уникальный идентификатор. Можно задать разрешения, теги и описание.
  4. Обновление и версионирование: AMI могут быть обновлены путём создания новых версий. Для автоматизации используются инструменты, такие как AWS Systems Manager Automation, Packer (от HashiCorp) или скрипты на основе AWS CLI.

Управление AMI включает мониторинг устаревших образов, удаление неиспользуемых AMI для экономии затрат на хранение снимков EBS, а также настройку политик жизненного цикла с помощью AWS Backup или Lambda-функций.

Применение

AMI широко используются в различных сценариях облачных вычислений:

  • Стандартизация развёртывания: компании создают золотые образы (golden images) с предустановленным ПО и настройками безопасности, что обеспечивает единообразие всех экземпляров.
  • Автомасштабирование (Auto Scaling): группы автомасштабирования используют AMI для быстрого запуска новых экземпляров в ответ на изменение нагрузки.
  • Разработка и тестирование: AMI позволяют быстро разворачивать тестовые среды, идентичные продуктивным, что ускоряет цикл разработки.
  • Непрерывная интеграция и доставка (CI/CD): в пайплайнах CI/CD создаются временные AMI для сборки и тестирования приложений, после чего они удаляются.
  • Миграция в облако: AMI используются для переноса существующих серверов в AWS путём создания образов с помощью инструментов, таких как AWS Server Migration Service (SMS) или VM Import/Export.

Интересные факты

  • AMI могут быть скопированы между регионами AWS, что позволяет разворачивать приложения в разных географических зонах.
  • Размер AMI влияет на время запуска экземпляра: чем больше образ, тем дольше загрузка. Для оптимизации используются минимальные образы, содержащие только необходимые компоненты.
  • Amazon Linux AMI — это официальный образ, поддерживаемый Amazon, который оптимизирован для работы с сервисами AWS и включает предустановленные инструменты, такие как AWS CLI и CloudWatch агенты.
  • В 2023 году AWS представила возможность создания AMI на основе экземпляров с архитектурой ARM (Graviton), что позволило снизить затраты на лицензирование и повысить энергоэффективность.

Критика и ограничения

  • Затраты на хранение: снимки EBS, связанные с AMI, хранятся отдельно и оплачиваются. Накопление большого количества устаревших AMI может привести к неожиданным расходам.
  • Время создания: создание AMI на основе экземпляра с большим объёмом данных может занимать значительное время, особенно при использовании шифрования.
  • Региональная привязка: AMI привязаны к конкретному региону AWS. Для использования в другом регионе требуется копирование, что увеличивает время и затраты.
  • Безопасность: если публичный AMI содержит вредоносное ПО или уязвимости, он может быть использован злоумышленниками. AWS проверяет публичные образы, но не гарантирует их безопасность.

Источники

  • Документация Amazon Web Services: «Amazon Machine Images (AMI)»
  • Руководство по созданию и управлению AMI (AWS Whitepapers)
  • Статья «Understanding AMI: A Comprehensive Guide» (AWS Blog)
  • Материалы конференций re:Invent по теме EC2 и AMI

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

На главную BFOmetr →