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

如何在AWS CDK中通过JSON/YAML配置文件在代码中使用参数?

用JSON/YAML配置文件管理AWS CDK参数

完全可以通过JSON或YAML配置文件存储可修改参数,直接在cdk_stack.py中读取使用,完美解决你提到的两个问题——既能在代码里直接调用参数值做逻辑判断,又不用在命令行输入大量参数。

步骤1:创建配置文件

选JSON或YAML都可以,以下是两种格式的示例:

JSON格式(config.json)

{
  "environment": "prod",
  "lambda_memory": 256,
  "cors_origins": ["https://your-app.com", "https://admin.your-app.com"],
  "db_instance_type": "db.t3.medium"
}

YAML格式(config.yaml)

environment: prod
lambda_memory: 256
cors_origins:
  - https://your-app.com
  - https://admin.your-app.com
db_instance_type: db.t3.medium

步骤2:在CDK栈中读取并使用配置

在cdk_stack.py里直接读取配置文件,然后把参数值用在函数调用、条件判断里:

读取JSON配置的示例代码

import json
from aws_cdk import Stack, aws_lambda, aws_apigateway
import constructs

# 加载配置文件
with open("config.json", "r") as config_file:
    config = json.load(config_file)

class MyAppStack(Stack):
    def __init__(self, scope: constructs.Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        # 根据配置做条件判断
        if config["environment"] == "prod":
            adjusted_memory = config["lambda_memory"] * 2
        else:
            adjusted_memory = config["lambda_memory"]

        # 用配置值创建Lambda函数
        lambda_func = aws_lambda.Function(
            self, "MyServiceLambda",
            runtime=aws_lambda.Runtime.PYTHON_3_11,
            handler="main.handler",
            code=aws_lambda.Code.from_asset("lambda_code"),
            memory_size=adjusted_memory
        )

        # 用配置值设置API网关CORS
        api = aws_apigateway.RestApi(self, "MyServiceApi")
        api.root.add_method(
            "GET",
            authorization_type=aws_apigateway.AuthorizationType.NONE,
            cors_options=aws_apigateway.CorsOptions(
                allow_origins=config["cors_origins"]
            )
        )

读取YAML配置的示例代码

如果用YAML,需要先安装依赖:pip install pyyaml,然后代码如下:

import yaml
from aws_cdk import Stack, aws_lambda, aws_apigateway
import constructs

# 加载YAML配置
with open("config.yaml", "r") as config_file:
    config = yaml.safe_load(config_file)

# 后续栈的逻辑和JSON示例完全一致,直接用config中的键值对即可

额外优化建议

  • 把配置文件加入.gitignore,避免敏感信息(比如数据库密码、API密钥)提交到代码仓库,可以写一个config.example.json作为模板,让其他开发者复制后修改。
  • 按环境拆分配置文件,比如config.dev.json、config.prod.json,通过环境变量切换加载:
import os
env = os.getenv("CDK_ENV", "dev")  # 默认加载dev环境配置
with open(f"config.{env}.json", "r") as config_file:
    config = json.load(config_file)

运行时只需设置环境变量,比如export CDK_ENV=prod就能加载生产环境的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:35