Минимальный срок выделения Dedicated Host для EC2 Mac — 24 часа; это условие AWS описывает в документации по экземплярам EC2 Mac. Поэтому не завершайте очистку по одному признаку — остановленному экземпляру.
Симптом: CI завершился, экземпляр остановлен, но Dedicated Host ещё числится выделенным.
Быстрое решение: сохраните нужные данные, обработайте экземпляр по правилам AWS, проверьте право на освобождение, затем отдельно освободите хост и подтвердите его состояние.
Эта инструкция для CI-инженеров, которые закрывают временную macOS-среду и проверяют, что за ней не остались ресурсы.
Она также пригодится разработчикам, отвечающим за сборки, журналы и ключи подписи.
Если вы выбираете среду для следующих запусков, в конце есть условия для сравнения собственного хоста и удалённого Mac.
Сначала определите, какой ресурс вы завершаете
В Amazon EC2 Mac связаны два уровня: экземпляр macOS и выделенный физический хост. Остановка или завершение экземпляра — это не то же самое действие, что освобождение Dedicated Host. Операции имеют разные цели, а успешный результат каждой нужно проверять отдельно.
AWS требует Dedicated Host для EC2 Mac. Перед освобождением хоста должны быть учтены связанные с ним экземпляры и условия доступности ресурса. Состояние экземпляра в консоли само по себе не подтверждает, что хост снят с выделения. AWS описывает процедуру остановки и очистки Mac отдельно от процедуры освобождения хоста: правила остановки и завершения EC2 Mac и порядок освобождения Dedicated Host.
| Что видно в консоли | Что это означает | Что проверить дальше |
|---|---|---|
| Экземпляр работает | На нём могут выполняться сборки, тесты или фоновые задачи | Очередь CI, активные процессы и данные для сохранения |
| Экземпляр остановлен | Работа экземпляра прекращена, но это не подтверждает освобождение хоста | Выполнена ли требуемая очистка и каков текущий статус хоста |
| Экземпляр завершён | Экземпляр больше не используется как запущенная машина; сохранность данных зависит от настроек хранилища | Остались ли нужные тома и связанные ресурсы |
| Хост доступен для освобождения | AWS показывает состояние, при котором можно проверить дальнейший шаг освобождения | Нет ли связанных экземпляров и соблюдены ли условия AWS |
| Хост освобождён | Выделение завершено по данным AWS | Результат операции и последующее начисление расходов |
Названия и отображение состояний могут отличаться в зависимости от интерфейса и изменений AWS. Для проверки ориентируйтесь на актуальную документацию и сведения о конкретном Host ID, а не только на таблицу выше.
До очистки проверьте очередь CI и сохранность данных
Не останавливайте Mac, пока в очереди есть ожидающие задачи или выполняются сборки. Сценарий знакомый: команда считает релиз завершённым, выключает CI-хост, а параллельный тестовый запуск теряет рабочее окружение. Сначала проверьте очередь планировщика, активные job и автоматические повторы. Затем сообщите команде о временном окне очистки и запретите новые задания на эту машину.
Следом разделите данные на восстанавливаемые и критичные. Кэш зависимостей или промежуточные файлы часто можно построить повторно, но это зависит от длительности сборки и внешних источников. Подписанный архив, отчёт о тестировании, диагностический журнал или материал, необходимый для разбора сбоя, лучше сохранить до завершения экземпляра.
| Что проверить | Что сохранить или зафиксировать | Риск при пропуске |
|---|---|---|
| Итоговые сборки и тестовые результаты | Проверить выгрузку в утверждённое хранилище команды; зафиксировать ссылку и контрольную сумму, если это предусмотрено процессом | Невозможно получить релизный файл или доказательство прохождения тестов |
| Журналы CI и диагностики | Сохранить журнал job, системные сообщения и сведения о версии инструментов | Сложнее расследовать сбой после удаления среды |
| Сертификаты и данные подписи | Проверить место хранения, владельца и возможность восстановления; не копировать закрытые ключи в незащищённый архив | Риск потери доступа или утечки секретов |
| Кэш и временные каталоги | Уточнить, можно ли пересоздать их и сколько времени это займёт | Повторная сборка может стать дольше или потребовать ручного восстановления |
| Диски и тома | Сверить тип хранилища, настройки удаления и требуемый способ сохранения | При завершении экземпляра данные на отдельных ресурсах могут быть удалены |
Не исходите из предположения, что завершение экземпляра автоматически оставит нужный том. Для EBS поведение связано с настройкой удаления при завершении. Проверьте её до операции по правилам сохранения EBS-томов после завершения экземпляра. Если по вашему сценарию нужен снимок EBS, создайте его и дождитесь завершения операции, сверяясь с документацией AWS по созданию снимка.
Снимок EBS не является универсальной копией macOS-машины. Сначала установите, где находятся нужные артефакты и секреты: в томе, внешнем хранилище, системе CI или другом сервисе. Сохранение одного ресурса не доказывает, что сохранены остальные.
Шаг первый: остановите новые задания и завершите активные
Сначала снимите хост с маршрутизации новых задач. В зависимости от настроек вашего CI это может означать отключение агента, изменение метки исполнителя или временное исключение машины из пула. После этого убедитесь, что запущенные job завершились либо были корректно отменены. Не начинайте остановку, пока машина выполняет сборку, запись журналов или передачу результатов.
Зафиксируйте идентификаторы экземпляра и Dedicated Host, связанные с задачей. Не полагайтесь на название, которое присвоили машине в CI: оно может не совпадать с AWS-идентификатором или быть изменено. Для дальнейшей проверки используйте идентификаторы из консоли или CLI.
Если есть сомнения, проведите короткий сценарный разбор: какой артефакт ещё нужен, кто подтвердил его сохранение, какие задания могут стартовать автоматически и кто проверит статус хоста после очистки. Это особенно важно, когда CI обслуживает несколько веток и команды используют общий пул исполнителей.
Шаг второй: выберите остановку или завершение экземпляра
Остановка экземпляра и его завершение решают разные задачи. Остановка сохраняет возможность использовать экземпляр повторно при соблюдении условий AWS, но сама по себе не означает, что Dedicated Host освобождён. Завершение закрывает использование экземпляра, однако не отменяет необходимость проверить хранилища и отдельно установить состояние хоста.
Для EC2 Mac AWS описывает специальный процесс очистки хоста после остановки или завершения экземпляра. Следуйте именно этой процедуре, а не общей инструкции, рассчитанной на другой тип виртуальной машины. Текущие требования приведены в руководстве AWS по остановке и завершению Mac.
Перед действием сверяйте ID и состояние экземпляра:
aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxxxxx
Если нужен именно остановленный экземпляр, команда выглядит так:
aws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxxxxxx
Если принято решение завершить экземпляр:
aws ec2 terminate-instances --instance-ids i-xxxxxxxxxxxxxxxxx
Эти команды не заменяют проверки результата. После выполнения дождитесь соответствующего изменения состояния, проверьте сохранность данных и только затем переходите к Dedicated Host. Перед запуском команды убедитесь, что профиль AWS, регион и идентификатор относятся к нужному окружению. Ошибка в контексте аккаунта или региона может привести к проверке не того ресурса.
Когда можно освободить AWS EC2 Mac Dedicated Host?
AWS устанавливает для Dedicated Host минимальный период выделения в 24 часа. Проверьте, что этот срок прошёл, и сверьте актуальные условия освобождения с правилами Dedicated Host. Важно не выводить право на освобождение только из того, что экземпляр больше не работает.
Если экземпляр остановлен
Остановка может запустить связанный с Mac процесс очистки, но это не является достаточным доказательством, что выделение Dedicated Host завершено. Проверьте, завершилась ли очистка и что AWS показывает для Host ID. Если статус или связанные ресурсы не позволяют выполнить освобождение, не повторяйте команду вслепую: сначала выясните, какое именно условие не выполнено.
Если экземпляр завершён
Убедитесь, что завершение действительно отражено в AWS и что не осталось связанных экземпляров, блокирующих освобождение. Сопоставьте итоговый список экземпляров с теми, которые использовались для CI. Отдельно проверьте, что необходимые данные сохранены в соответствии с настройками EBS и фактической схемой хранения.
Если освобождение не проходит
Сверьте статус и историю операций в консоли. Проверьте состояние Dedicated Host, активные или связанные экземпляры и ограничение минимального срока. AWS описывает значения и наблюдение за состояниями в руководстве по мониторингу Dedicated Host. Если консоль показывает состояние, не подходящее для освобождения, следуйте объяснению AWS для этого состояния и не считайте ошибку временной без подтверждения.
Выполните проверку перед освобождением
Перед заключительной операцией пройдите условия по порядку:
- Если в очереди нет задач, активные задания завершены, а новые запуски отключены, переходите к обработке экземпляра. Иначе вернитесь к планировщику CI.
- Если команда подтвердила сохранение сборок, журналов и нужных данных подписи, продолжайте. Иначе отложите удаление и завершите экспорт.
- Если выбранное действие для экземпляра соответствует плану — остановка для возможного повторного использования или завершение при закрытии среды — проверьте результат. Иначе не освобождайте хост.
- Если прошло минимальное время выделения и статус Dedicated Host соответствует актуальным условиям AWS, выполните освобождение. Иначе дождитесь выполнения условий или разберите причину несовпадения.
- Если операция подтверждена, проверьте Host ID и записи о расходах. Если статус неоднозначен, сохраните сведения об операции и продолжайте проверку в консоли или через официальный интерфейс AWS.
Эта схема не заменяет проверку настроек аккаунта. Она помогает не перепутать «экземпляр остановлен» с «ресурс больше не выделен».
Освободите хост и подтвердите результат
Когда условия соблюдены, проверьте сведения о Dedicated Host:
aws ec2 describe-hosts --host-ids h-xxxxxxxxxxxxxxxxx
Затем используйте освобождение по документированному AWS процессу. Для CLI команда имеет такой вид:
aws ec2 release-hosts --host-ids h-xxxxxxxxxxxxxxxxx
Сверьте команду и возможные ограничения с актуальной инструкцией AWS по освобождению хоста. Не считайте успешный запуск CLI окончательным подтверждением: проверьте ответ команды и последующее состояние ресурса. AWS также указывает, что Dedicated Host оплачивается в соответствии с правилами выделения и освобождения; сверяйте последствия для начислений с официальным описанием тарификации Dedicated Host.
Для итоговой проверки зафиксируйте Host ID, состояние экземпляра, результат операции освобождения и время проверки. Убедитесь, что хост больше не отображается как выделенный для дальнейшего использования. Затем сопоставьте статус AWS с данными о расходах. Исторические начисления за период использования не исчезают сразу только потому, что ресурс освобождён; проверяйте фактическую запись биллинга, а не делайте вывод по одному экрану консоли.
Что делать при следующей потребности в macOS CI
Если сборки выполняются регулярно и требуют непрерывно доступной инфраструктуры, собственный Dedicated Host может соответствовать модели постоянной эксплуатации. Преимущества — контроль среды и возможность поддерживать собственные настройки. Недостатки — необходимость следить за выделенным ресурсом, очередями, очисткой и расходами даже при неравномерной нагрузке. Конкретную стоимость оценивайте по правилам AWS и фактическим данным аккаунта, а не по общим предположениям.
Если задачи запускаются эпизодически, а среда нужна на время сборки или тестирования, сравните выделенный AWS-хост с удалённым Mac, доступным по выбранному периоду. MergeMac предоставляет удалённые Mac для такого сценария; перед выбором проверьте условия на странице тарифов и периодов использования Mac и доступность нужного региона в разделе расположения Mac. Это не универсальная замена: собственная инфраструктура может быть предпочтительнее при постоянной нагрузке, особых требованиях к физическому доступу или необходимости полностью контролировать серверную схему.
После освобождения AWS-хоста не оставляйте команду без повторяемого процесса. Зафиксируйте, кто отключает новые задания, кто подтверждает экспорт результатов и кто проверяет статус Dedicated Host и биллинг. Такой порядок отделяет завершение CI от завершения инфраструктуры: сначала сохраняются данные, затем обрабатывается экземпляр, и только после этого подтверждается освобождение хоста.
Читайте также
Продолжите работу с macOS без собственного Dedicated Host
MergeMac предоставляет выделенный физический Mac mini для сборок и CI — ресурсы компьютера не делятся с другими клиентами.
