amazon-web-services - AWS CDK 应用程序如何在 "reference"中创建 aws lambda 函数(无需在堆栈中创建新函数)?

标签 amazon-web-services aws-lambda aws-api-gateway aws-cdk

我在我的 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 中

关于amazon-web-services - AWS CDK 应用程序如何在 "reference"中创建 aws lambda 函数(无需在堆栈中创建新函数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65695247/

相关文章:

aws-lambda - AWS CloudFormation 更新 Lambda 代码以使用 S3 存储桶中的最新版本

node.js - 如何将数据从 AWS API Gateway 自定义授权方传递到 AWS Lambda 函数?

amazon-web-services - 如何在 Serverless 中获取环境变量中的 API 网关 url

node.js - AWS SES 安排电子邮件发送 (Node SDK)

amazon-web-services - 不使用 .htaccess 的新 Elastic Beanstalk 实例

javascript - Safari 未通过接受编码 :gzip, 放气

aws-lambda - AWS : How to create Base Path Mappings for custom domain

amazon-web-services - 是否可以使用 CloudFormation 重新创建 AWS 资源?

amazon-web-services - 从作为 API 网关的 Lambda 内部建立数据库连接

amazon-web-services - AWS APi Gateway 客户端证书与 AWS Certificate manager for Elastic Beanstalk ELB