我在我的 aws 环境中创建了一个名为 add
的 lambda 函数,我正在尝试构建一个 cdk 应用程序,它将生成一个新的 API 网关,然后调用 add
.
我正在学习 https://cdkworkshop.com/20-typescript/30-hello-cdk/300-apigw.html 上的教程我注意到我在网上遇到的所有示例似乎都以类似于以下的形式编写代码:
const hello = new lambda.Function(this, 'HelloHandler', {
runtime: lambda.Runtime.NODEJS_10_X, // execution environment
code: lambda.Code.fromAsset('lambda'), // code loaded from "lambda" directory
handler: 'hello.handler' // file is "hello", function is "handler"
});
const api = new apiGateWay.LambdaRestApi(this, 'api', {
handler: hello
})
上面的例子直接创建了一个新的lambda函数名,里面有HelloHanlder
。我想引用我之前创建的函数 add
,而不是向堆栈添加任何新的 lambda 函数,大致如下:
const api = new apiGateWay.LambdaRestApi(this, 'api', {
handler: "add"
})
这可以修复吗?
最佳答案
选项 1:使用函数 Arn 中的现有 Lambda
const hello = lambda.Function.fromFunctionArn(
this,
"hello-lambda",
"arn:aws:lambda:us-east-1:111222233333:function:hello-lambda"
);
new apigw.LambdaRestApi(this, "Endpoint", {
handler: hello,
});
选项 2:您可以将现有的 lambda 导入到新的 CloudFormation 堆栈中,然后导出 Arn 并导入到 CDK 中
- Example of import a DynamoDb , Lambda 也不异常(exception)
- Exporting Arn as stack output
- 将堆栈导入 CDK 并使用它。
关于amazon-web-services - AWS CDK 应用程序如何在 "reference"中创建 aws lambda 函数(无需在堆栈中创建新函数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65695247/