用途
该技能面向使用 AWS CDK 开发云基础设施的场景,提供从构造编写到部署前校验的完整指导,并可结合 MCP 服务器获取最新的 AWS 文档与 CDK 工具支持。
适用场景包括:创建新的 CDK 堆栈或构造、重构已有的 CDK 基础设施、在 CDK 中实现 Lambda 函数、遵循 AWS CDK 最佳实践、在部署前验证 CDK 堆栈配置,以及核实 AWS 服务能力与区域可用性。
主要能力
- 合成与生成 AWS 基础设施即代码,创建可组合的基础设施组件与部署模式。
- 集成 AWS CDK MCP 服务器,用于获取 CDK 构造推荐、检索 CDK 最佳实践、获取 CDK 模式建议、验证 CDK 配置,以及处理 CDK 专属 API 问题。
- 结合 AWS 文档 MCP 工具核实 AWS 服务信息,包括文档检索与特定页面阅读,以及通过区域可用性工具检查服务可用性。
- 提供部署前多层校验策略,包括 cdk-nag 合成期校验、cdk synth、构建与测试,以及校验脚本。
- 提供 CDK 模式参考文档与校验脚本。
使用方式
AWS 文档核实要求
技能强调在回答 AWS 相关问题前,应优先使用 AWS MCP 工具核实信息:
mcp__aws-mcp__aws___search_documentation或mcp__*awsdocs*__aws___search_documentation:搜索 AWS 文档mcp__aws-mcp__aws___read_documentation或mcp__*awsdocs*__aws___read_documentation:阅读特定页面mcp__aws-mcp__aws___get_regional_availability:检查服务可用性
若 AWS MCP 工具不可用,需引导用户配置 AWS MCP,并帮助确定适合其环境的方案:具备 uvx 与 AWS 凭证时使用完整 AWS MCP Server;没有 Python 或凭证时使用 AWS Documentation MCP(无需认证);无法确定时询问用户选择。
核心 CDK 原则
资源命名方面,技能明确要求:在 CDK 构造中,当资源名称是可选参数时不要显式指定名称。原因是 CDK 自动生成的名称有助于:模式可复用(同一构造或模式可多次部署而不冲突)、并行部署(多个堆栈可在同一区域同时部署)、更清晰的共享逻辑(模式与共享代码可多次初始化而不发生名称冲突)、堆栈隔离(每个堆栈自动获得唯一标识的资源)。对于不同环境(dev、staging、prod),应遵循 AWS 安全支柱最佳实践,使用独立的 AWS 账户,而非在同一账户内依赖资源命名,账户级隔离可提供更强的安全边界。
Lambda 函数开发
根据运行时选择相应的 Lambda 构造:
TypeScript/JavaScript 使用 @aws-cdk/aws-lambda-nodejs:
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
new NodejsFunction(this, 'MyFunction', {
entry: 'lambda/handler.ts',
handler: 'handler',
// Automatically handles bundling, dependencies, and transpilation
});
Python 使用 @aws-cdk/aws-lambda-python:
import { PythonFunction } from '@aws-cdk/aws-lambda-python-alpha';
new PythonFunction(this, 'MyFunction', {
entry: 'lambda',
index: 'handler.py',
handler: 'handler',
// Automatically handles dependencies and packaging
});
其好处包括:自动打包与依赖管理、自动处理转译、无需手动打包、部署模式一致。
部署前验证
采用多层验证策略:
第一层:实时 IDE 反馈(推荐)。对 TypeScript/JavaScript 项目安装 cdk-nag 进行合成期校验:
npm install --save-dev cdk-nag
并在 CDK 应用中添加:
import { Aspects } from 'aws-cdk-lib';
import { AwsSolutionsChecks } from 'cdk-nag';
const app = new App();
Aspects.of(app).add(new AwsSolutionsChecks());
VS Code 用户可选安装 CDK NAG Validator 扩展以获得保存文件时的更快反馈。cdk-nag 在所有 CDK 语言中可用(Python/Java/C#/Go)。
第二层:合成期校验(必需)。通过 cdk synth 运行 cdk-nag 的完整规则校验。对于合理的例外情况,使用带说明理由的抑制方式:
import { NagSuppressions } from 'cdk-nag';
// Document WHY the exception is needed
NagSuppressions.addResourceSuppressions(resource, [
{
id: 'AwsSolutions-L1',
reason: 'Lambda@Edge requires specific runtime for CloudFront compatibility'
}
]);
第三层:提交前安全网。包括构建(npm run build 或对应语言构建命令)、测试(npm test 或 pytest、mvn test 等)、校验脚本(./scripts/validate-stack.sh)。校验脚本关注语言检测、模板大小与资源数量分析、合成成功验证;详细的反模式检查由 cdk-nag 处理。
开发工作流
- 设计:规划基础设施资源与关系。
- 核实 AWS 服务:使用 AWS 文档 MCP 确认服务可用性与功能,检查所需服务的区域可用性、服务限制与配额、最新 API 规范。
- 实现:按最佳实践编写 CDK 构造,使用 CDK MCP 服务器获取构造推荐,并通过 MCP 工具参考 CDK 最佳实践。
- 校验:运行部署前检查。
- 合成:生成 CloudFormation 模板。
- 审查:检查合成后的模板正确性。
- 部署:部署到目标环境。
- 验证:确认资源正确创建。
堆栈组织与测试策略
堆栈组织:对复杂应用使用嵌套堆栈;将关注点分离为逻辑构造边界;导出其他堆栈可能需要的值;使用 CDK context 处理环境特定配置。
测试策略:对单个构造进行单元测试;对堆栈合成进行集成测试;对 CloudFormation 模板进行快照测试;验证资源属性与关系。
有效使用 MCP 服务器
AWS 文档 MCP 的使用时机:始终在实现前核实新的 AWS 服务功能或配置、目标区域的服务可用性、API 参数规范、服务限制与配额、AWS 服务的安全最佳实践。示例场景如检查 Lambda 是否支持 Python 3.13 运行时、核实 DynamoDB 是否在 eu-south-2 可用、了解当前 Lambda 超时限制、获取最新 S3 加密选项。
CDK MCP 服务器的使用时机:获取 CDK 构造选择与用法、CDK API 参数选项、CDK 最佳实践模式、构造属性配置、CDK 专属优化。示例场景如 API Gateway REST API 的推荐 CDK 构造、配置 NodejsFunction 打包选项、CDK 堆栈组织最佳实践、带自动扩缩容的 DynamoDB CDK 构造。
MCP 使用最佳实践:先核实,实现新功能前始终检查 AWS 文档 MCP;区域校验,检查目标部署区域的服务可用性;CDK 指导,使用 CDK MCP 获取构造专属推荐;保持更新,MCP 服务器提供超出知识截止时间的最新信息;组合来源,同时使用技能模式与 MCP 服务器。
参考资料
- 校验脚本:
scripts/validate-stack.sh,用于部署前校验。 - CDK 模式:
references/cdk-patterns.md,包含常见 CDK 模式及用例、应避免的反模式、安全最佳实践、成本优化策略、性能考量。 - CDK MCP 服务器已随插件自动配置。
- GitHub Actions 集成:当仓库中存在 GitHub Actions 工作流文件时,确保
.github/workflows/中定义的所有检查在提交前通过,以避免 CI/CD 失败并维持代码质量标准。
限制
技能使用依赖 AWS MCP 工具以获得准确、最新的 AWS 信息;若不可用需先完成配置。未提供该技能的收费、价格与平台支持等具体信息。