SuperAPI AI 工具集

infrastructure-code-synthesis

部署与运维

查看项目

更新于 10-15 12:02

技能介绍

用途

该技能面向使用 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 处理。

开发工作流

  1. 设计:规划基础设施资源与关系。
  2. 核实 AWS 服务:使用 AWS 文档 MCP 确认服务可用性与功能,检查所需服务的区域可用性、服务限制与配额、最新 API 规范。
  3. 实现:按最佳实践编写 CDK 构造,使用 CDK MCP 服务器获取构造推荐,并通过 MCP 工具参考 CDK 最佳实践。
  4. 校验:运行部署前检查。
  5. 合成:生成 CloudFormation 模板。
  6. 审查:检查合成后的模板正确性。
  7. 部署:部署到目标环境。
  8. 验证:确认资源正确创建。

堆栈组织与测试策略

堆栈组织:对复杂应用使用嵌套堆栈;将关注点分离为逻辑构造边界;导出其他堆栈可能需要的值;使用 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 信息;若不可用需先完成配置。未提供该技能的收费、价格与平台支持等具体信息。