Amazon DOP-C02: Инфраструктура как код и управление конфигурациями — Руководство по подготовке
Часть AWS DevOps Engineer Professional DOP-C02 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Обзор
Инфраструктура как код (IaC) и управление конфигурацией в AWS обеспечивают повторяемое, аудируемое и управляемое развертывание и настройку инфраструктуры и приложений. CloudFormation и AWS Cloud Development Kit (CDK) описывают ресурсы декларативно или с помощью кода, который синтезируется в CloudFormation. Уровни конфигурации, такие как AWS OpsWorks и AWS Systems Manager, применяют и отслеживают желаемое состояние на инстансах в EC2 и гибридных парках. Секреты, параметры и создание образов завершают жизненный цикл, обеспечивая неизменяемые, безопасные развертывания в любом масштабе.
Стеки CloudFormation, контроль изменений и управление
Стеки CloudFormation — это единица развертывания. Проектируйте стеки с учетом границ жизненного цикла и владения, чтобы минимизировать радиус поражения. Используйте параметры экономно и отдавайте предпочтение предустановленным значениям по умолчанию с сопоставлениями или поиском в SSM. Экспортируйте и импортируйте только стабильные, общие значения через Outputs и Fn::ImportValue, чтобы избежать жесткой связи.
Вложенные стеки инкапсулируют многократно используемые компоненты и позволяют сохранять родительские шаблоны небольшими. Родительский стек может передавать параметры дочерним стекам и использовать их выходные данные, что позволяет создавать модульные архитектуры (например, вложенный стек с общей сетью, используемый стеком приложения). Сосредотачивайте вложенные стеки на одной задаче (VPC, уровень данных, уровень приложения) и версионируйте их независимо.
Наборы стеков (StackSets) развертывают один шаблон в нескольких аккаунтах и регионах. Используйте модель разрешений, управляемую сервисом, с AWS Organizations для автоматического развертывания в OU и автоматического включения новых аккаунтов. Настраивайте параметры операций (максимальное количество одновременных аккаунтов/регионов, устойчивость к сбоям) для контроля над развертыванием. Переопределения параметров для каждого аккаунта или региона позволяют адаптировать стандартный шаблон к локальным ограничениям. Отслеживайте дрейф StackSet и экземпляров стеков для обнаружения изменений, внесенных в обход.
Наборы изменений (Change sets) обеспечивают безопасные обновления, которые может проверить человек. Всегда используйте CreateChangeSet и проверяйте влияние на каждый ресурс, замены и потенциальную потерю данных перед выполнением ExecuteChangeSet. Интегрируйте наборы изменений в автоматизированные конвейеры для контролируемых утверждений.
Обнаружение дрейфа проверяет, соответствуют ли ресурсы стека шаблону. Регулярно запускайте обнаружение дрейфа для критически важных стеков и StackSets; имейте в виду, что не все свойства оцениваются для всех типов ресурсов (неподдерживаемые свойства помечаются как «не проверено»). Рассматривайте дрейф как инцидент: расследуйте, собирайте контекст и исправляйте либо обновлением стека, либо кодифицировав дрейф и применив его заново.
Политики стека — это JSON-документы, которые защищают критически важные ресурсы во время обновлений. Запрещайте обновления для незаменимых ресурсов (например, производственных баз данных, зон Route 53) и используйте StackPolicyDuringUpdateBody, чтобы временно открыть «хирургический» путь для конкретного изменения, а затем восстановить более строгую политику. Комбинируйте с защитой от удаления и DeletionPolicy (Retain/Snapshot) для создания защитных механизмов. Для ресурсов с внешним состоянием (бакеты S3) планируйте поведение при удалении. Если бакет необходимо очистить перед удалением, реализуйте пользовательский ресурс для очистки объектов при удалении стека.
AWS CDK и расширяемость CloudFormation
AWS CDK моделирует инфраструктуру на знакомых языках (TypeScript, Python, Java, .NET, Go). Конструкты (Constructs) — это строительные блоки CDK:
- Конструкты L1 (CfnXxx) генерируются из спецификации CloudFormation и соответствуют ресурсам один к одному.
- Конструкты L2 добавляют высокоуровневую логику и разумные значения по умолчанию (например, ApplicationLoadBalancedFargateService).
- «Паттерны» L3 объединяют несколько L2 для создания готовых к использованию архитектур.
Приложение CDK содержит один или несколько стеков. Во время выполнения cdk synth приложение разрешает контекстные запросы (например, ID VPC), формирует ассеты и создает шаблон CloudFormation. Перед развертыванием cdk bootstrap создает бакеты для ассетов и роли в окружении. Используйте cdk diff для предварительного просмотра изменений, а затем cdk deploy для отправки шаблонов и ассетов; CDK внутренне использует наборы изменений и покажет и запросит подтверждение для изменений, затрагивающих безопасность (IAM или замена ресурсов). Применяйте теги к стекам и ресурсам с помощью Aspects, чтобы обеспечить применение тегов в масштабе всей организации. Если абстракций L2 недостаточно, используйте «лазейки» (node.defaultChild) или переходите на уровень конструктов L1.
Пользовательские ресурсы CloudFormation расширяют IaC на все, что доступно через API. Пользовательский ресурс на базе Lambda получает события Create, Update и Delete с RequestId, PhysicalResourceId и свойствами. Функция должна:
- Быть идемпотентной и вернуть результат (успех/неудача) по предварительно подписанному URL-адресу (ResponseURL) в пределах тайм-аута.
- Установить стабильный PhysicalResourceId для отслеживания обновлений и управления очисткой при событии Delete.
- Обрабатывать повторные попытки и ожидание стабилизации для сервисов с итоговой согласованностью.
Используйте исполняющие роли IAM с минимальными привилегиями для Lambda, включайте экспоненциальную задержку при вызовах API и обеспечивайте корреляцию логов через RequestId. Для длительных операций рассмотрите возможность использования Step Functions с пользовательским ресурсом, который ожидает токен выполнения. По возможности отдавайте предпочтение CloudFormation Registry для многократно используемых и версионируемых провайдеров.
Секреты и параметры в Infrastructure as Code
Никогда не прописывайте секреты в шаблонах или коде в явном виде. Используйте динамические ссылки для получения конфиденциальных значений во время развертывания:
- Secrets Manager: {{resolve:secretsmanager:secret-id:SecretString:json-key:version-stage}}
- SecureString Parameter Store: {{resolve:ssm-secure:parameter-name:version}}
Динамические ссылки предотвращают сохранение секретов в шаблоне стека или в событиях. Не размещайте секреты в секции Outputs или в свойствах ресурсов, которые CloudFormation логирует в виде простого текста. Предоставьте роли выполнения (execution role) CloudFormation разрешение на расшифровку или получение значений по ссылкам и ограничьте область действия KMS CMK только теми субъектами (principals), которым необходим доступ.
Parameter Store идеально подходит для хранения несекретной конфигурации (флаги функций, идентификаторы AMI, эндпоинты). Используйте версионированные параметры SSM для безопасных откатов и атомарного продвижения изменений между средами. В CDK импортируйте значения с помощью ssm.StringParameter.fromStringParameterName или fromSecureStringParameterAttributes для защищенных значений и встраивайте чтение параметров в user data или в скрипты начальной загрузки приложения.
Secrets Manager предназначен для управления жизненным циклом, ротации и аудита секретов. Интегрируйте ротацию с поддерживаемыми сервисами (RDS, Aurora) или с помощью пользовательских Lambda-функций. Ссылайтесь на секреты во время выполнения (runtime), а не встраивайте их в AMI, чтобы избежать распространения устаревших данных. Для контейнеризированных или бессерверных рабочих нагрузок внедряйте секреты через переменные окружения, используя ссылки на Secrets Manager, или монтируйте их через секцию secrets в ECS TaskDefinition; выполняйте ротацию с минимальным простоем, используя пулы соединений с коротким TTL и механизм повторных попыток.
← Конвейеры CI · Все домены · Мониторинг →
Отработать эти вопросы → · Тесты на время на 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.
Сдайте экзамен →Related guides
- Amazon DOP-C02: Systems Manager, установка исправлений и операционная автоматизация — Руководство по подготовке
- Amazon DOP-C02: Безопасность, соответствие требованиям и управление — Руководство по подготовке
- Amazon DOP-C02: Высокая доступность, отказоустойчивость и аварийное восстановление — Руководство по подготовке