如何在调试CDK Python应用时正常加载cdk.json中的上下文变量
IntelliJ调试Python CDK应用加载cdk.json变量配置方案
直接运行app.py不会触发CDK的默认配置加载逻辑,只有CDK CLI调用时才会自动读取cdk.json的上下文、环境配置,按以下步骤配置即可解决问题:
方案一:修改调试运行入口(推荐,无需改动业务代码)
- 打开IntelliJ顶部菜单 运行 > 编辑配置,找到你当前用于启动app.py的Python运行配置项
- 将配置页中的 脚本路径 改为本地CDK CLI的可执行文件路径:
- macOS/Linux可在终端执行
which cdk获取路径,通常为/usr/local/bin/cdk或~/.local/bin/cdk - Windows可在cmd执行
where cdk获取路径,通常为C:\Users\<你的用户名>\AppData\Roaming\Python\Python<版本号>\Scripts\cdk.exe
- macOS/Linux可在终端执行
- 在 形参 输入框填入
synth --app "python app.py",若只需调试特定栈,可改为synth 你的栈名 --app "python app.py" - 保存配置后启动调试,CDK会自动加载当前项目cdk.json中所有定义的上下文变量、配置项
方案二:手动加载cdk.json配置(适合不想修改运行入口的场景)
直接在app.py入口代码中添加cdk.json读取逻辑,初始化App时传入上下文即可:
import json import os from aws_cdk import App # 读取项目根目录的cdk.json文件 cdk_json_path = os.path.join(os.path.dirname(__file__), "cdk.json") with open(cdk_json_path, "r", encoding="utf-8") as f: cdk_config = json.load(f) # 初始化App时传入上下文字典 app = App(context=cdk_config.get("context", {})) # 后续栈初始化逻辑保持不变 # MyStack(app, "MyStack") app.synth()
配置校验
你可以在app.py中添加打印代码验证变量是否加载成功:print(app.node.try_get_context("你在cdk.json中定义的变量key"))
调试运行后查看控制台输出是否和cdk.json中的配置值一致即可。
注意:如果你的cdk.json配置中使用了环境变量占位符,需要在IntelliJ运行配置的 环境变量 栏补充所有依赖的环境变量,否则仍会出现变量缺失问题。
内容的提问来源于stack exchange,提问作者Jaxx
相关产品推荐
相关产品推荐

