如何使用aws_cdk将资源参数从一个堆栈传递到另一个堆栈



我试图为2个资源即lambda函数和API网关创建两个单独的堆栈。下面是我的app.py

的代码
import aws_cdk as cdk
from Stack.lambda_function.hello_handler_stack import HelloHandlerStack
from Stack.apigateway.hello_handler_apigateway_handler import HelloHandlerApigatewayStack
app = cdk.App()
Stack1 = HelloHandlerStack(app, "HelloHandlerStack", env=cdk.Environment(Account="**",Region="*"))
Stack2 = HelloHandlerApigatewayStack(app, "HelloHandlerApigatewayStack", env=cdk.Environment(Account="**",Region="*"), temp_lambda = Stack1.my_lambda)
app.synth()

hello_handler_stack.py

from constructs import Construct
from aws_cdk import (
Stack,
aws_lambda as _lambda,
)
class HelloHandlerStack(Stack):
def __init__(self, scope: Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
my_lambda = _lambda.Function(
self, 'HelloHandler',
runtime=_lambda.Runtime.PYTHON_3_7,
code=_lambda.Code.from_asset('lambda'),
handler='hello.handler',
)
self.my_lambda = my_lambda

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:
super().__init__(scope, id, **kwargs)
apigw.LambdaRestApi(
self, 'Endpoint',
handler=kwargs["test_lambda"],
)

但是当我执行cdkls时,我得到一个错误,说明

TypeError:堆栈。init()获得了一个意外的关键字参数"test_lambda">

我应该能够将关键字参数传递给第二个堆栈并使用它来构建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, test_lambda, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
apigw.LambdaRestApi(
self, 'Endpoint',
handler=test_lambda,
)

最新更新