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

aws_cdk跨栈传递资源参数方法及传参报错解决方案

报错原因

你遇到的问题由两个错误共同导致:

  • 自定义参数透传问题:你把自定义的Lambda参数放在**kwargs中直接传给了CDK原生Stack基类的构造函数,基类不识别自定义入参,直接抛出意外关键字参数的错误
  • 参数名不匹配:你在app.py中传入的参数名是temp_lambda,但在API网关栈的代码中尝试读取的参数名是test_lambda,两边命名不一致
修复方案

自定义栈参数必须在调用父类构造函数前,从kwargs中提前提取出来,不能透传给Stack基类,同时统一两边的参数命名。

  1. 修改API网关栈文件hello_handler_apigateway_handler.py:
from constructs import Construct
from aws_cdk import (
    Stack,
    aws_lambda as _lambda,
    aws_apigateway as apigw,
)


class HelloHandlerApigatewayStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        # 提前取出自定义参数,避免透传给父类Stack
        linked_lambda = kwargs.pop("temp_lambda")
        # 剩余CDK原生参数(如env)传给父类构造
        super().__init__(scope, id, **kwargs)

        apigw.LambdaRestApi(
            self, 'Endpoint',
            handler=linked_lambda,
        )
  1. 你的app.py和Lambda栈代码不需要额外修改,CDK会自动处理跨栈的资源引用权限、自动生成跨栈输出导入逻辑,不需要手动配置CfnOutput,只要保证两个栈部署在同账号同区域即可,你当前的env配置满足要求。
验证方式

修改完成后在项目根目录执行cdk ls,可以正常列出两个栈名即为修复成功:

HelloHandlerStack
HelloHandlerApigatewayStack

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:21:25