IntelliJ + AWS Toolkit + 无服务器应用程序:“必须能够在项目中找到处理程序才能部署到 Lambda”

AHL*_*AHL 7 intellij-idea aws-lambda aws-serverless

我使用 HelloWorld 样式模板应用程序在 IntelliJ 中创建了一个新的无服务器项目。我设法在我的 AWS 账户中远程构建、部署和运行了这个应用程序。我什至设法将它与 API 网关集成,以便通过 Internet 访问它。

随着项目的建立,它有 1 个名为 HelloWorldFunction 的 Lambda 函数。它的处理程序称为“helloworld.App::handleRequest”,我可以在 template.yaml 文件中看到它的配置。

现在我想在同一个应用程序项目中创建另一个 Lambda 函数。因此,在 IntelliJ 中,我遵循以下步骤:

  • AWS Explorer > Lambda
  • 右键单击 Lambda
  • 单击“创建新的 AWS Lambda ...”
  • 输入函数名称(例如 MyNewLambdaFunction)
  • 输入运行时(Java 8)和 S3 存储桶以及 IAM 角色(一切正常)
  • 然后我需要输入“处理程序”的名称,这就是我的问题开始的地方

我在这里尝试了不同的名称,例如“MyNewHandler”或“helloworld.App::handleRequest”(显然这不起作用,因为它已被HelloWorldFunction 使用)、“helloworld.App2::handleRequest”、.. .. 等等。

每次我尝试使用其他名称或方式来定义处理程序时,都会收到以下错误消息:

必须能够在项目中找到处理程序才能部署到 Lambda

题:

我是否需要先在 template.yaml 文件中配置新的 Lambda 函数,或者我需要怎样调用 Handler 才能使其工作?

我确信这只是一个菜鸟错误,但我一直在谷歌上搜索这个并没有找到任何遇到同样问题的人。我还在 AWS 上阅读了有关处理程序的内容,但它仅在概念层面对其进行了描述,而不是在有多个 Lambda 的实践中进行了描述。

谢谢你的帮助!

安迪

Ast*_*arp 4

我的理解是你需要添加app2首先将类添加到同一个包中:

\n\n

单击包名称 \xe2\x86\x92 新建 \xe2\x86\x92 Java 类 \xe2\x86\x92 类型 app2

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n\n

导航到该类的实现App2并单击装订线中的 lambda 图标。您会注意到“创建新的 AWS Lambda”已添加到下拉列表中:

\n\n

在此输入图像描述

\n\n

当您选择它时,您将看到“Handler:”字段已正确预填充:

\n\n

在此输入图像描述

\n\n

我的理解是每个处理程序必须放在一个单独的类中并且处理程序的名称handleRequest是标准的并由框架提供

\n