SuperAPI AI 工具集

aws-cdk

部署与运维

查看项目

更新于 10-15 17:23

技能介绍

用途:提供 AWS CDK 的领域知识,覆盖构造(construct)编写、部署流程、合规检查、漂移检测、资源导入、安全重构,以及 CDK CLI 与 CloudFormation 报错排查。不适用场景:原生 CloudFormation YAML/JSON、SAM、Terraform/Pulumi,以及 CDK Pipelines 之外的 CI/CD,这些应使用内置知识或专门技能。

主要能力与关键警告:跨栈引用删除会导致“死锁”(Export 仍被使用而无法删除),推荐先用 CrossStackReferences.of($RESOURCE).produce(ReferenceStrength.BOTH) 再 WEAK,最后移除,分三次部署。构造 ID 变更会触发资源替换,状态型资源可能丢数据,部署前务必 cdk diff。UPDATE_ROLLBACK_FAILED 可用 cdk rollback $STACK 或加 --orphan <LogicalId> 修复,express 模式栈无法回滚。--hotswap/--hotswap-fallback 与 --express 仅限开发,禁止用于生产;express 失败只能向前滚动恢复。非空 S3 桶销毁后仍会残留,需同时设置 removalPolicy: DESTROY 与 autoDeleteObjects: true。

常用命令:cdk bootstrap aws://$ACCOUNT/$REGION;cdk init app --language typescript 或 python;部署流程为 cdk synth --strict → cdk diff → cdk deploy;快速迭代用 cdk deploy --hotswap-fallback、cdk watch 或 cdk deploy --express(仅开发);合规用 Aspects.of(app).add(new AwsSolutionsChecks());漂移用 cdk drift $STACK(CI 中加 --fail);导入用 cdk import 或 cdk deploy --import-existing-resources;重构用 cdk refactor --unstable=refactor,且同次部署不得改属性。

排查要点:DeployFailed 时用 cdk deploy $STACK --verbose、cdk --unstable=diagnose diagnose $STACK(CLI ≥ 2.1120.0)或 aws cloudformation describe-events --stack-name $STACK --filters FailedEvents=true,首个 _FAILED 事件即根因;凭证问题用 aws sts get-caller-identity 与 cdk doctor;并发锁用 rm -rf cdk.out 后重跑,并行 CI 用 --output ./cdk.out.$BUILD_ID。

构造模式优先 L2,L2 缺属性时用 L1 配合 Mixins/Facades,逃生舱用 node.defaultChild → addPropertyOverride。安全建议:CI/CD 用 OIDC 免静态密钥、bootstrap 加 --custom-permissions-boundary、资源间 IAM 用 grant*()、CI 中启用 cdk-nag 与 --strict、状态型资源独立栈并设 terminationProtection: true、提交 cdk.context.json。