You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK synth命令默认区域异常问题排查与解决

AWS CDK Python:cdk synth不读取自定义CDK_DEFAULT_REGION环境变量的问题

问题描述

使用Python版AWS CDK时出现异常:已将环境变量CDK_DEFAULT_REGION设为eu-central-1,直接运行app.py能正确读取该值,但执行cdk synth命令时,却默认使用us-east-1区域。

相关配置与现象

环境变量

(.venv) $ set | grep CDK
CDK_DEFAULT_ACCOUNT=99999999999999
CDK_DEFAULT_REGION=eu-central-1

cdk.json(前两行)

{
  "app": "python3 app.py",

app.py核心代码

app = aws_cdk.App()
logging.info(f"{os.environ['CDK_DEFAULT_ACCOUNT']} is account, and {os.environ['CDK_DEFAULT_REGION']} is region")

CdkTestingStack(
    app,
    "cdk-testing",
    env=aws_cdk.Environment(
        account=os.getenv('CDK_DEFAULT_ACCOUNT'),
        region=os.getenv('CDK_DEFAULT_REGION')
    ),
)

直接运行py app.py时,日志显示使用eu-central-1区域;但执行cdk synth时,日志显示使用us-east-1区域。

疑问

  1. cdk synth从何处获取区域值?
  2. 如何确保自定义的区域配置被cdk synth正确使用?

原因与解决方案

问题原因

CDK_DEFAULT_ACCOUNT和CDK_DEFAULT_REGION是AWS CDK内部专用的环境变量,CDK CLI在执行命令时会自行覆盖这两个变量的值(优先级顺序为:命令行参数 > AWS配置文件/凭证 > 默认值us-east-1),因此手动设置这两个变量不会被cdk synth识别。

解决步骤

  1. 重命名自定义环境变量:将CDK_DEFAULT_ACCOUNT和CDK_DEFAULT_REGION改为非CDK前缀的名称,例如MY_AWS_DEFAULT_ACCOUNT和MY_AWS_DEFAULT_REGION,并重新设置环境变量。
  2. 修改app.py代码:更新代码中引用的环境变量名称:
app = aws_cdk.App()
logging.info(f"{os.environ['MY_AWS_DEFAULT_ACCOUNT']} is account, and {os.environ['MY_AWS_DEFAULT_REGION']} is region")

CdkTestingStack(
    app,
    "cdk-testing",
    env=aws_cdk.Environment(
        account=os.getenv('MY_AWS_DEFAULT_ACCOUNT'),
        region=os.getenv('MY_AWS_DEFAULT_REGION')
    ),
)
  1. 重新执行cdk synth,即可正确读取自定义的区域配置。

内容的提问来源于stack exchange,提问作者BertC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 17:05:10