AWS Serverless Deployment 用于把无服务器应用部署到 AWS,支持 SAM 与 CDK 两种路径。技能覆盖项目脚手架、IaC 模板、CDK 构造与模式、部署工作流、CI/CD 流水线,以及 SAM/CDK 共存。若涉及 Lambda 运行时行为、事件源、编排、可观测性和优化,请参见 aws-lambda 技能。\n\n何时加载参考文件:\n\n- SAM 项目设置、模板、部署工作流、本地测试或容器镜像:见 references/sam-project-setup.md\n- CDK 项目设置、构造、CDK 测试或 CDK 流水线:见 references/cdk-project-setup.md\n- CDK Lambda 构造、NodejsFunction、PythonFunction 或 CDK Function:见 references/cdk-lambda-constructs.md\n- CDK 无服务器模式、API Gateway CDK、Function URL CDK、EventBridge CDK、DynamoDB CDK 或 SQS CDK:见 references/cdk-serverless-patterns.md\n- SAM 与 CDK 共存、从 SAM 迁移到 CDK,或使用 sam build 配合 CDK:见 references/sam-cdk-coexistence.md\n\n最佳实践:\n\nSAM:\n- 建议:使用 sam_init 并选择适合用例的模板\n- 建议:在 Globals 段设置 timeout、memory、runtime、tracing 的全局默认值\n- 建议:使用 samconfig.toml 的环境专属配置段进行多环境部署\n- 建议:涉及原生依赖时使用 sam build --use-container\n- 不建议:在不理解资源配置的情况下从互联网复制粘贴模板\n- 不建议:在模板中硬编码资源 ARN 或账号 ID —— 使用 !Ref、!GetAtt 和 !Sub\n\nCDK:\n- 建议:使用 TypeScript —— 类型检查可在合成阶段、任何 AWS API 调用之前发现错误\n- 建议:优先使用 L2 构造和 grant* 方法,而非 L1 和原始 IAM 语句\n- 建议:将有状态与无状态资源分到不同堆栈;为有状态堆栈启用终止保护\n- 建议:将 cdk.context.json 提交到版本控制 —— 它缓存 VPC/AZ 查询以保证确定性合成\n- 建议:使用 aws-cdk-lib/assertions 编写单元测试;断言有状态资源的逻辑 ID 以发现意外替换\n- 建议:每次部署前在 CI 中使用 cdk diff 审查变更\n- 不建议:硬编码账号 ID 或区域字符串 —— 使用 this.account 和 this.region\n- 不建议:在没有流水线的情况下直接在生产环境使用 cdk deploy\n- 不建议:跳过 cdk bootstrap —— 没有 CDK 工具包堆栈,部署将失败\n\n配置:\n\nAWS CLI 设置:此技能要求主机已配置 AWS 凭证。验证访问:运行 aws sts get-caller-identity 确认凭证有效。\n\nSAM CLI 设置:验证:运行 sam --version。\n\n容器运行时设置:安装 Docker 兼容的容器运行时;sam_local_invoke 和基于容器的构建需要它。验证:使用 docker --version 或 finch --version 等命令。\n\nAWS Serverless MCP Server:默认启用写入。插件在 .mcp.json 中附带 --allow-write,因此 MCP 服务器可以代表用户创建项目、生成 IaC 并部署。敏感数据(如 Lambda 和 API Gateway 日志)访问默认未启用;如需授权,请在 .mcp.json 中添加 --allow-sensitive-data-access。\n\nSAM 模板验证钩子:此插件包含一个 PostToolUse 钩子,在任何对 template.yaml 或 template.yml 的编辑后自动运行 sam validate。若验证失败,错误会作为系统消息返回,便于立即修复。该钩子需要安装 SAM CLI 和 jq;若两者任一缺失,验证将被跳过并给出系统消息。用户可通过 /hooks 禁用。验证:运行 jq --version。\n\nIaC 框架选择:默认 CDK。覆盖语法:"use CloudFormation" → 生成 YAML 模板;"use SAM" → 生成 YAML 模板。未指定时,始终使用 CDK。\n\nCDK 语言选择:默认 TypeScript。覆盖语法:"use Python" → 生成 Python 代码;"use JavaScript" → 生成 JavaScript 代码。未指定时,始终使用 TypeScript。\n\n错误场景:Serverless MCP Server 不可用时,提示用户 "AWS Serverless MCP not responding",并询问 "Proceed without MCP support?";未经用户确认不要继续。\n\n资源:AWS SAM 文档、AWS CDK 文档、AWS Serverless MCP Server。
aws-serverless-deployment
部署与运维
更新于 10-15 12:34