Amazon DVA-C02: CloudFormation и инфраструктура как код (SAM, CDK) — Руководство по подготовке
Часть AWS Developer Associate DVA-C02 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Пользовательские ресурсы, защита стека и ускорители локального/инкрементального развертывания
Используйте пользовательские ресурсы, когда в CloudFormation отсутствует нативный тип ресурса, реализуя провайдеры на базе Lambda, которые следуют протоколу ответов CloudFormation для событий Create/Update/Delete. Создавайте идемпотентные обработчики, отвечайте с помощью cfn-response или фреймворка CloudFormation CLI и обрабатывайте длительные операции с помощью событий о ходе выполнения или путем сохранения состояния в DynamoDB. Помните о тайм-аутах пользовательских ресурсов: CloudFormation имеет максимальный тайм-аут операции стека, и ресурсы на базе Lambda должны завершиться в этом окне, иначе произойдет откат стека. Защищайте критически важные ресурсы с помощью политик стека (SetStackPolicy), чтобы блокировать замену или обновление указанных логических идентификаторов во время обновлений стека, и включайте защиту от удаления для сред, которые вы не можете позволить себе удалить. Для инкрементальной и локальной разработки используйте AWS SAM CLI (sam build, sam local invoke, sam local start-api) и sam sync для быстрых обновлений только кода, а также CDK watch или cdk deploy с артефактами для обновления только измененных ресурсов; эти инструменты вычисляют хеши артефактов (хеширование артефактов Lambda), поэтому перепубликуется только измененный код. Интегрируйте наборы изменений CloudFormation (ChangeSets), версионирование Lambda (AutoPublishAlias в SAM или lambda.Version в CDK) и смещение трафика CodeDeploy для безопасных развертываний. Распространенные ошибки включают превышение лимитов шаблона или параметров, неправильное использование межаккаунтных импортов и инициализацию тяжеловесных SDK-клиентов внутри обработчиков, что вызывает задержки при холодном старте — предпочитайте глобальные, лениво инициализируемые клиенты с настраиваемыми тайм-аутами и логикой повторных попыток.
Практическая задача: сценарий использования
Сценарий: AcmeMedia управляет организацией AWS с несколькими аккаунтами, включая отдельные аккаунты Dev, Staging и Prod в регионе us-east-1. Бессерверный сервис обработки изображений (Lambda + S3 + DynamoDB) должен развертываться единообразно во всех аккаунтах, при этом общая чувствительная конфигурация должна храниться централизованно.
Задача: Развернуть один и тот же стек CloudFormation/SAM/CDK в нескольких аккаунтах и обеспечить безопасную доступность артефактов кода Lambda в каждом целевом аккаунте, не храня секреты в шаблонах.
Рекомендуемый подход:
- Используйте AWS CloudFormation StackSets с разрешениями, управляемыми сервисом (
undefined
), а затем aws cloudformation create-stack-instances для развертывания в целевые аккаунты и регионы, или настройте CDK Pipelines для синтеза и развертывания в каждый аккаунт с помощью ролей.
2. Упакуйте артефакты Lambda с помощью публикации артефактов CDK (cdk bootstrap в каждом аккаунте/регионе) или sam package в бакет S3 в каждом целевом аккаунте; автоматизируйте копирование артефактов через CI (CodeBuild с использованием aws s3 cp или репликации S3) и используйте cdk deploy или sam deploy с учетными данными целевого аккаунта.
3. Храните чувствительную конфигурацию в AWS Secrets Manager в каждом аккаунте, ссылаясь на нее в шаблоне через динамические ссылки (
undefined
), или разверните реплицированный секрет с помощью функции репликации Secrets Manager, избегая использования параметров NoEcho.
4. Используйте наборы изменений (ChangeSets) (create-change-set, execute-change-set), включите защиту от удаления на производственных стеках и применяйте политики стека для предотвращения случайной замены таблиц DynamoDB или бакетов S3 во время обновлений.
Обоснование: StackSets и развертывания на основе конвейеров обеспечивают безопасное, аудируемое распространение на несколько аккаунтов/регионов, в то время как публикация артефактов и секреты для каждого аккаунта сохраняют учетные данные локальными и аудируемыми. Наборы изменений, защита от удаления и политики стека снижают риски при итеративных развертываниях.
← Amazon DynamoDB и проектирование NoSQL · Все домены · Развертывание и 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.
Сдайте экзамен →