Amazon SOA-C02: Развертывание, предоставление ресурсов и автоматизация — Руководство по подготовке
Часть AWS SysOps Administrator Associate SOA-C02 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Этот раздел охватывает методы и инструменты, используемые для надежного и воспроизводимого предоставления, обновления и эксплуатации инфраструктуры и развертываний приложений в AWS. Особое внимание уделяется декларативному, идемпотентному предоставлению ресурсов, автоматизированным конвейерам для релизов и автоматизации операционных задач, которая сокращает ручной труд, сохраняя при этом возможность аудита и безопасность. Операторы должны находить баланс между безопасностью (откаты, политики изменений) и скоростью (неизменяемые образы, автоматическое применение патчей), а также выбирать паттерны, поддерживающие соответствие требованиям и восстанавливаемость.
CloudFormation и паттерны «инфраструктура как код»
Используйте CloudFormation (или CDK/Terraform) для декларативного описания инфраструктуры как кода, чтобы стеки были идемпотентными: шаблон описывает желаемое состояние, а движок приводит ресурсы в соответствие с ним. Отдавайте предпочтение декларативным ресурсам и параметрам, а не императивным скриптам. Типичные паттерны использования CLI:
- Создание и проверка набора изменений (change set):
undefined
- Просмотр и выполнение:
undefined
- Удобное развертывание:
undefined
Архитектурные решения:
- Используйте вложенные стеки или модули для повторного использования и обхода ограничений; выносите изменяемые секреты и большие бинарные файлы из шаблонов (в SSM Parameter Store / Secrets Manager).
- Используйте политики стека, защиту от удаления и триггеры отката для безопасности; включите обнаружение дрейфа (drift detection) с помощью
undefined
и
undefined
.
- Предоставляйте сервисной роли CloudFormation IAM-политику с ограниченными правами для создания ресурсов; избегайте предоставления CloudFormation широких администраторских полномочий.
При сравнении подходов к IaC:
- CloudFormation/CDK: нативный инструмент, интегрированный с наборами изменений и обнаружением дрейфа в AWS, требует
undefined
для IAM-ресурсов.
- Terraform: не зависит от провайдера, требует управления файлом состояния, хорошо подходит для мультиоблачных сред.
- Императивные скрипты (CLI/SDK): подходят для разовых операций, но не идемпотентны и сложнее в аудите.
CI/CD и практики автоматизации развертывания
Реализуйте воспроизводимые этапы конвейера: исходный код -> сборка -> тестирование -> развертывание. Используйте AWS CodePipeline, интегрируя CodeBuild, CodeDeploy или сторонние инструменты (Jenkins, GitHub Actions). Ключевые конфигурации:
- CodeBuild: определите
undefined
для фаз и артефактов; предоставьте роли проекта минимальные привилегии (
undefined
для входных данных,
undefined
для артефактов).
- CodeDeploy: используйте группы развертывания и
undefined
; выберите тип развертывания — на месте (in-place) или сине-зеленое (blue/green). Для EC2/ASG предпочтительнее сине-зеленое развертывание для снижения рисков.
- ECR + ECS/EKS: отправляйте образы из CI, тегируйте их неизменяемо (семантическая версия или ID сборки) и ссылайтесь на тег или дайджест образа в определениях задач.
Критерии выбора стратегий развертывания:
- Используйте сине-зеленое или канареечное развертывание с переключением трафика, когда требуется почти нулевое время простоя и безопасный откат; это поддерживается CodeDeploy или переключением весов в Application Load Balancer (ALB).
- Используйте последовательное (rolling) или обновление на месте (in-place) для небольших, stateless-групп инстансов, где емкость может быть уменьшена во время обновления.
- Убедитесь, что роли конвейера имеют ограниченные права: роль выполнения конвейера, сервисная роль CodeBuild и роль развертывания (профиль инстанса) — каждая с минимальными необходимыми разрешениями.
Управляйте секретами и параметрами безопасно: храните параметры в SSM Parameter Store (тип SecureString) или AWS Secrets Manager; предоставляйте ролям конвейера права
undefined
и
undefined
или
undefined
по мере необходимости.
Подготовка AMI, неизменяемые образы и управление AMI
Неизменяемая инфраструктура означает создание нового AMI со всеми «запеченными» в него патчами ОС и приложения, а затем замену инстансов вместо их изменения. Используйте EC2 Image Builder или Packer в CI для автоматического создания AMI:
- Конвейеры EC2 Image Builder могут запускаться по расписанию, устанавливать пакеты, выполнять тесты и создавать AMI с версионированными именами и тегами.
- Packer интегрируется в CI (CodeBuild/Jenkins) для выполнения скриптов сборки и вывода ID созданных AMI; храните ID последнего AMI в SSM Parameter Store (например,
undefined
) для дальнейшего использования.
Управляйте жизненным циклом AMI:
- Тегируйте образы метаданными сборки и датой истечения срока действия; автоматизируйте отмену регистрации и удаление снепшотов по истечении периода хранения.
- Используйте Launch Templates/ASG с обновлением версии для выкатки новых AMI; для неизменяемых развертываний создайте новую ASG, ссылающуюся на новую версию Launch Template, и переключите целевые группы.
Сравнение изменяемого и неизменяемого подходов:
- Неизменяемый (новый AMI/новая ASG): безопаснее, проще откат путем переключения на предыдущую ASG или AMI, последовательный жизненный цикл.
- Изменяемый (применение патчей на месте): быстрее для небольших исправлений, но выше риск дрейфа конфигурации и сложнее воспроизводимость; используйте только тогда, когда этого требуют ограничения.
Автоматизация, Run Command и установка исправлений в AWS Systems Manager
Systems Manager (SSM) централизует операционные задачи: Run Command для выполнения разовых команд, State Manager для поддержания требуемого состояния, Patch Manager для установки исправлений ОС по расписанию и Automation для сложных рабочих процессов. Распространенные шаблоны CLI:
- Отправка разовой команды: aws ssm send-command –instance-ids i-0123456789abcdef0 –document-name “AWS-RunShellScript” –parameters commands=’[“yum update -y”]'
- Запуск предопределенной автоматизации: aws ssm start-automation-execution –document-name “AWS-ApplyPatchBaseline” –parameters “InstanceIds=[‘i-…’]”
- Использование ассоциаций State Manager для принудительного применения конфигурации (например, конфигурации агента SSM, заданий cron) и базовых планов (baselines) Patch Manager для правил утверждения и сканирования на соответствие.
Детали конфигурации и критерии для принятия решений:
- Используйте Patch Manager с базовыми планами (Baselines) и окнами обслуживания (Maintenance Windows) для предсказуемой установки исправлений в соответствии с требованиями; выберите дни для автоматического утверждения и отклоняйте неутвержденные образы AMI, если используете иммутабельную стратегию.
- Для экземпляров без агента SSM или с ограниченным доступом к сети рассмотрите возможность использования Session Manager с VPC эндпоинтами, чтобы не открывать порты SSH.
- Всегда требуйте наличия профиля экземпляра (instance profile) с политикой AmazonSSMManagedInstanceCore для доступа SSM; ограничивайте дополнительные разрешения по мере необходимости.
Управление изменениями, обнаружение расхождений и откат
Внедрите контроль изменений, который интегрирует запуски конвейера, теги и утверждения. Используйте наборы изменений (change sets) CloudFormation для предварительного просмотра различий и политики стека (stack policies) для отклонения разрушительных обновлений. Шаблоны CLI:
- Обнаружение расхождения: aws cloudformation detect-stack-drift –stack-name my-stack и aws cloudformation describe-stack-resource-drifts –stack-name my-stack
- Используйте политику стека для защиты критически важных ресурсов во время обновлений и настройте RollbackConfiguration с триггерами отката для уведомления о неудачных обновлениях.
Стратегии отката:
- Для CloudFormation: автоматический откат при сбое является поведением по умолчанию; используйте триггеры отката и сохраняйте ресурсы, когда это необходимо.
- Для приложений: предпочитайте сине-зеленое или канареечное развертывание со смещением трафика, чтобы обеспечить мгновенный откат путем изменения весов в ALB/Route 53 или восстановления предыдущих наборов задач.
- Поддерживайте неизменяемые (иммутабельные) артефакты (ID AMI, образы контейнеров) и сохраняйте предыдущие версии в реестрах/SSM, чтобы откаты были детерминированными.
Критерии принятия решений:
- Если задействованы миграции данных с сохранением состояния, включите в процесс обратимые скрипты миграции или используйте флаги функций (feature flags), чтобы отделить выпуск кода от миграции схемы.
- Используйте проверки работоспособности развертывания и автоматизированные дымовые тесты в качестве шлюза в конвейере для раннего запуска откатов.
Распространенные ошибки и критерии принятия решений
- Внесение ручных изменений в консоли в обход процессов, что вызывает расхождение (дрейф) с состоянием IaC: принудительно используйте обнаружение расхождений (aws cloudformation detect-stack-drift) и требуйте, чтобы исправления вносились через шаблоны IaC; используйте средства контроля IAM для ограничения редактирования в консоли.
- Отсутствие безопасного плана отката для релизов: внедрите сине-зеленые или канареечные развертывания и храните предыдущие артефакты/AMI доступными для мгновенного возврата.
- Чрезмерно широкие разрешения IAM для конвейеров и ролей: применяйте принцип наименьших привилегий; разделяйте роли (сервисная роль конвейера, роль сборки, профиль экземпляра) и предоставляйте только необходимый доступ к ssm:GetParameter, secretsmanager:GetSecretValue, kms:Decrypt и S3.
- Хранение секретов непосредственно в шаблонах или в виде открытого текста: переместите секреты в Secrets Manager или в SSM Parameter Store как SecureString и ссылайтесь на них во время развертывания с надлежащими разрешениями на расшифровку.
- Установка исправлений на продакшене (in-place) без тестирования: создавайте («выпекайте») AMI в CI с обновленными пакетами и дымовыми тестами, затем развертывайте неизменяемые образы через ASG или сине-зеленые конвейеры.
- Игнорирование расхождений и защиты ресурсов с состоянием: используйте политики стека и регулярно обнаруживайте расхождения; для ресурсов с состоянием требуйте ручного утверждения и создания снимков перед разрушительными изменениями.
Практическая задача: Пример использования
Компания Acme Payments должна развернуть API-сервис, соответствующий стандарту PCI, применять ежемесячные исправления ОС и иметь возможность быстро выполнять откат, если развертывание вызовет ошибки в рабочее время.
- Внедрить неизменяемый (иммутабельный) конвейер: используйте CodePipeline/CodeBuild для создания («выпекания») AMI с помощью EC2 Image Builder (или Packer), тегируйте AMI и публикуйте ID AMI в SSM Parameter Store.
- Выполнять развертывание с помощью шаблонов CloudFormation, которые ссылаются на параметр SSM с AMI и создают новую версию ASG + Launch Template для каждого релиза; используйте наборы изменений (change sets) для предварительной проверки.
- Использовать CodeDeploy или сине-зеленое смещение трафика с помощью целевых групп ALB с проверками работоспособности и автоматизированными дымовыми тестами; настроить автоматический откат при сбое проверки работоспособности.
- Запланировать работу Patch Manager через окна обслуживания (Maintenance Windows) в Systems Manager для применения исправлений во внепиковое время; выполнять создание и развертывание образов с исправлениями, чтобы избежать установки исправлений на работающем продакшене (in-place patching).
- Применить принцип наименьших привилегий для ролей IAM в конвейере, хранить секреты в Secrets Manager и включить обнаружение расхождений и политики стека в CloudFormation для критически важных ресурсов.
Обоснование: Создание образов и неизменяемое развертывание разделяет этапы сборки и выполнения, обеспечивая воспроизводимые артефакты и безопасные пути отката; автоматизированная установка исправлений через SSM в сочетании с неизменяемыми развертываниями минимизирует риски и помогает соответствовать требованиям, сохраняя при этом возможность восстановления.
← Высокая доступность · Все домены · Безопасность →
Отработать эти вопросы → · Тесты на время на ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Сдайте экзамен →