5分钟跑通 CDK Python 应用:从 0 到部署
【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot
先看清改动去向:一行 Stack 定义会走多远
你改了 Stack 定义里的一行属性,云端会怎么变?S3 桶要重建吗?Lambda 要重新部署吗?答案藏在 CloudFormation 模板里,要等部署完才见真章。awesome-copilot 仓库有一份现成的拆法,入口在 skills/aws-cdk-python-setup/SKILL.md。它覆盖 AWS(Amazon Web Services)CDK(Cloud Development Kit)Python 工程全流程。所有命令可直接复制,5 分钟从环境检查走到cdk deploy。
看懂输入输出:这套流程替你做了什么
整条链路是一组明确的映射:
- 输入是 Python 代码:你在
app.py和 Stack 类里写资源定义; - 输出是 CloudFormation 模板:
cdk synth把代码翻译成cdk.out/下的 JSON; - 云端只在确认后变:
cdk diff先预览,cdk deploy再执行; - 分工是三方:你写代码,CLI(Command Line Interface)翻译模板,CloudFormation 落成资源。
把这组映射记下来,后面每个里程碑都知道在验证哪一环。
动手:按五个里程碑把栈推上云端
里程碑 1:让 cdk 命令有反应
先给本地环境做体检,四个工具缺一不可:
| 工具 | 最低版本 | 职责 |
|---|---|---|
| Node.js | ≥ 14.15.0 | 承载 CDK CLI 运行时 |
| Python | ≥ 3.7 | 编写 Stack 定义 |
| AWS CLI | 最新稳定版 | 管理凭据、调 AWS API |
| Git | 任意现代版本 | 版本控制 |
node -v python --version这两条只查版本,不产生任何云端动作。期望分别看到v14.x与3.7以上的数字。
npm install -g aws-cdk cdk --version第一条命令全局装 CLI,装完cdk才存在。第二条期望打印版本号,如2.1xx.x。看到版本号,这条里程碑达成。
⚠️
cdk提示 command not found?先跑node -v,低于 14.15 就升级 Node。版本没问题就查 npm 全局目录是否在 PATH。Windows 上装完记得重开终端。
里程碑 2:把凭据配通
CDK 部署时代你调 AWS API,身份必须先行。
# macOS brew install awscli # Linux / Windows:用发行版包管理器或官方安装脚本装完跑配置向导:
aws configure按提示填四项:Access Key、Secret Key、默认区域(如ap-southeast-1)、输出格式(建议json)。区域填错最伤。它决定cdk deploy默认落到哪个环境,新手容易翻车。
aws sts get-caller-identity期望返回一段 JSON,里面有Account账号 ID。看到账号号,凭据这条线就通了。
⚠️ 报
NoCredentialProviders或AccessDenied?重跑aws configure。再检查AWS_PROFILE是不是把配置指到了别处。
里程碑 3:生成第一个 Python 工程骨架
mkdir my-cdk-project && cd my-cdk-project cdk init app --language pythoninit生成一套标准骨架。别改它的布局,仓库里的自动化扫描靠它认工程:
| 文件 / 目录 | 作用 |
|---|---|
app.py | 应用入口,实例化 Stack |
my_cdk_project/ | 包目录,Stack 定义放这里 |
requirements.txt | 依赖清单(aws-cdk-lib+constructs) |
cdk.json | 工程标记文件,声明 app 入口命令 |
cdk.json就是扫描 IaC(Infrastructure as Code)资产时的指纹。skills/aws-cost-optimize/SKILL.md 找它来确认"这是 CDK 工程"。
里程碑 4:合成第一条 CloudFormation 模板
source .venv/bin/activate # macOS / Linux 用上一行;Windows 改用 .venv\Scripts\activate pip install -r requirements.txt激活后提示符出现(.venv)前缀。装依赖是把aws-cdk-lib(核心构造库)拉进本地环境。Stack 里所有资源类都来自它。
cdk synth期望输出:终端打印以AWS::CloudFormation::Stack开头的 JSON。cdk.out/同时落盘。这一步纯本地、不碰云端,是验证代码能否跑通的最便宜手段。
⚠️ 报
No module named 'aws_cdk'?虚拟环境没激活或依赖没装全。确认提示符带(.venv),再重跑一遍pip install -r requirements.txt。
里程碑 5:跑完 diff、bootstrap 与 deploy
部署前的安全动作:
cdk diff它拿本地模板和云端状态逐条比对。输出列出新增、更新、删除的资源。第一次部署时云端是空的。diff 会显示整栈新增,清单全绿就能放心下手。
cdk bootstrap它给目标"账号 + 区域"建一套环境。包括资产存储桶(S3)和 IAM(Identity and Access Management)角色。Lambda 代码包要先传到云端,这步就是备仓库。每个账号 + 区域组合只需执行一次。
cdk deploy期望:先打印变更摘要。你输入y确认后开始建栈,最后返回栈的 ARN(Amazon Resource Name)。拿到 ARN,栈就在云端活了。
⚠️
deploy报找不到资产桶?回跑cdk bootstrap。并确认区域和 bootstrap 时一致。
卡住了?按这个顺序自查
- 跑
cdk doctor:它汇总 Node、Python、CLI 版本与凭据状态。环境问题一次看清; - 验凭据:
aws sts get-caller-identity出账号号才算通。没通过就重跑aws configure; - 查区域:
aws configure get region要有值。且和 bootstrap、deploy 用同一个。
仓库里接着往下读
- 部署完核对云端真实状态,翻 skills/aws-resource-query/SKILL.md:只读,用自然语言查 EC2、S3、Lambda;
- 栈跑起来后看成本,skills/aws-cost-optimize/SKILL.md 扫 IaC 与云端资源,给出优化建议;
- 架构层过六大支柱,skills/aws-well-architected-review/SKILL.md 按支柱逐条检查栈定义。
以上技能与 agents/aws-principal-architect.agent.md 都挂在 plugins/aws-cloud-development/plugin.json 声明的 AWS 技能集群下,一次装齐。
把这条线接下去
你现在拥有"写码 → 合成 → 审查 → 部署"的完整闭环。接下来给栈加一个 S3 桶。只看cdk diff的输出,说出它会发生什么。
【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考