Amazon DOP-C02: 基础架构即代码和配置管理 — 学习指南

属于 AWS DevOps Engineer Professional DOP-C02 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.

概述

AWS 上的基础设施即代码 (IaC) 和配置管理为基础设施和应用程序的预置与配置提供了可重复、可审计且受治理的方式。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。将变更集集成到自动化管道中,以实现门控审批。

偏差检测 (Drift detection) 可验证堆栈资源是否与模板匹配。定期对关键堆栈和 StackSets 运行偏差检测;请理解,并非所有资源类型的所有属性都会被评估(不支持的属性会报告为“未检查”)。将偏差视为一个事件:进行调查,捕获上下文,并通过更新堆栈或将偏差代码化后重新应用来纠正。

堆栈策略 (Stack policies) 是在更新期间保护关键资源的 JSON 文档。禁止对不可替代的资源(例如,生产数据库、Route 53 托管区域)进行更新,并使用 StackPolicyDuringUpdateBody 为特定变更临时开辟一个精确的操作路径,然后恢复更严格的策略。结合终止保护 (termination protection) 和 DeletionPolicy (Retain/Snapshot) 作为护栏。对于具有外部状态的资源(如 S3 存储桶),需规划其删除行为。如果存储桶在删除前必须被清空,应实现一个自定义资源,在删除堆栈时清除对象。

AWS CDK 和 CloudFormation 可扩展性

AWS CDK 使用熟悉的语言(TypeScript、Python、Java、.NET、Go)对基础设施进行建模。Construct 是 CDK 的构建块:

一个 CDK 应用程序包含一个或多个堆栈。在执行 cdk synth 期间,应用程序会解析上下文查找(例如,VPC ID),渲染资产,并生成一个 CloudFormation 模板。在部署之前,cdk bootstrap 会创建环境的资产存储桶和角色。使用 cdk diff 预览变更,然后使用 cdk deploy 提交模板和资产;CDK 内部使用变更集,并会显示和确认安全敏感型变更(IAM 或资源替换)。通过 Aspects 为堆栈和资源打标签,以强制执行组织范围的标签策略。当 L2 抽象无法满足需求时,可使用“逃生舱口”(escape hatches) (node.defaultChild) 或降级使用 L1 construct。

CloudFormation 自定义资源 (custom resources) 将 IaC 的能力扩展到任何可通过 API 访问的内容。一个由 Lambda 支持的自定义资源会接收带有 RequestId、PhysicalResourceId 和属性的 Create、Update 和 Delete 事件。该函数必须:

为 Lambda 使用最小权限的 IAM 执行角色,在 API 调用中加入指数退避机制,并通过 RequestId 进行日志关联。对于大型或长时间运行的操作,可考虑使用 Step Functions,并让自定义资源等待一个执行令牌。在适用时,优先选择 CloudFormation Registry 中可重用、有版本的提供程序。

基础设施即代码中的密钥和参数

切勿在模板或代码中硬编码密钥。使用动态引用在部署时解析敏感值:

动态引用可防止密钥被存储在堆栈模板或事件中。不要将密钥放置在 CloudFormation 会以明文形式记录的输出(Outputs)或资源属性中。授予 CloudFormation 执行角色解密或检索引用值的权限,并将 KMS CMK 的范围限定在需要访问的主体(principals)上。

Parameter Store 非常适合用于非机密配置(如功能标志、AMI ID、端点)。使用带版本的 SSM 参数可实现安全回滚和跨环境的原子化提升。在 CDK 中,使用 ssm.StringParameter.fromStringParameterName 导入值,或使用 fromSecureStringParameterAttributes 导入安全值,并将参数读取操作接入到用户数据(user data)或应用程序引导脚本中。

Secrets Manager 专为生命周期控制、轮换和审计而设计。将轮换功能与支持的引擎(如 RDS、Aurora)或自定义 Lambdas 集成。在运行时引用密钥,而不是将其烘焙到 AMI 中,以避免过时材料的扩散。对于容器化或无服务器工作负载,可通过由 Secrets Manager 引用支持的环境变量注入密钥,或通过 ECS/TaskDefinition 密钥进行挂载;通过使用短 TTL 的连接池和重试机制,以最小的停机时间进行轮换。

配置管理与不可变基础设施

AWS OpsWorks 提供预设了特定范式的配置管理。OpsWorks Stacks 使用 Chef cookbooks 和生命周期事件(Setup、Configure、Deploy、Undeploy、Shutdown)来编排应用程序的配置和部署,并通过健康检查支持自动修复,这些检查可以停止/启动或替换实例。在过去,OpsWorks 也提供托管的 Chef Automate 和 Puppet Enterprise;如今,许多团队转而标准化使用 Systems Manager 进行基于代理的编排,或者自行运行 Ansible/Chef/Puppet 控制平面。Ansible 并未与 OpsWorks 原生集成;替代方案是使用 Systems Manager State Manager 来运行 playbook,或者使用 AWX/Ansible Automation Platform 并结合 SSM Session Manager 连接和 EC2 动态清单。

AWS Systems Manager 是用于混合云配置的现代化控制平面:

不可变基础设施消除了漂移并加速了回滚。EC2 Image Builder 通过以下方式将镜像管道代码化:

添加测试组件以验证 CIS 基准、代理健康状况(SSM/CloudWatch)和应用程序冒烟测试。对镜像进行版本控制并使用语义化标签进行标记。将 AMI ID 发布到 Parameter Store(例如,/app/frontend/ami),并在 Auto Scaling 启动模板中引用它们。使用滚动或蓝绿部署策略进行部署;替换实例而不是进行原地修补,以保持不可变性。将漏洞扫描(Amazon Inspector)的结果反馈到管道的晋级门控中。不要将密钥烘焙到镜像中;在启动时通过实例元数据服务 v2(Instance Metadata Service v2)和对 SSM/Secrets Manager 的引用来检索。

实际问题场景

Capital One 需要为其面向客户的平台标准化多账户、多区域的部署,同时强制执行严格的治理、密钥管理并消除配置漂移。该环境横跨 AWS Organizations 中的数百个账户,并对数据库访问和操作系统加固实施了严格控制。

  1. 使用 AWS CDK 对基础设施建模并合成为 CloudFormation
  1. 通过 CloudFormation StackSets 分发基线网络和护栏堆栈
  1. 使用堆栈策略和变更集保护关键资源
  1. 使用 Lambda 支持的自定义资源扩展 IaC
  1. 使用 Secrets Manager 和 Parameter Store 集中管理密钥和配置
  1. 通过 Systems Manager State Manager 强制执行期望状态和合规性
  1. 通过 EC2 Image Builder 采用不可变基础设施
  1. 管道编排与治理

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.

通过考试 →

浏览 Amazon →

Related guides

一体化访问

一次订阅。所有考试。

所有计划均可无限制搜索答案、进行模拟测试、获取AI解释以及访问完整的资源库 — 支持20多种语言。

每月
24.87
Just €0.83/day
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

最具价值
12个月
179.87
Just €0.49/daySave 40%
包含所有内容:
  • 无限答案搜索
  • 无限模拟测试
  • AI驱动的解释
  • 完整资源库
  • 20多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品