Intellij idea IntelliJ+;AWS工具包&x2B;无服务器应用程序:“;必须能够在项目中找到处理程序,以便部署到Lambda;

Intellij idea IntelliJ+;AWS工具包&x2B;无服务器应用程序:“;必须能够在项目中找到处理程序,以便部署到Lambda;,intellij-idea,aws-lambda,aws-serverless,Intellij Idea,Aws Lambda,Aws Serverless,我使用HelloWorld样式的模板应用程序在IntelliJ中创建了一个新的无服务器项目。 我在AWS帐户中成功构建、部署并远程运行了该应用程序。我甚至设法将其与API网关集成,使其可以通过internet访问 设置项目时,它有一个名为HelloWorldFunction的Lambda函数。它的处理程序名为“helloworld.App::handleRequest”,我可以在template.yaml文件中看到它的配置 现在我想在同一个应用程序项目中创建另一个Lambda函数。因此,在Int

我使用HelloWorld样式的模板应用程序在IntelliJ中创建了一个新的无服务器项目。 我在AWS帐户中成功构建、部署并远程运行了该应用程序。我甚至设法将其与API网关集成,使其可以通过internet访问

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

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

  • AWS浏览器>Lambda
  • 右键单击Lambda
  • 单击“创建新的AWS Lambda…”
  • 输入函数名(例如MyNewLambdaFunction)
  • 输入运行时(Java8)、S3存储桶和IAM角色(一切正常)
  • 然后我需要输入“处理程序”的名称,这就是我的问题开始的地方
我在这里尝试了不同的名称,例如“MyNewHandler”或“helloworld.App::HandlerRequest”(显然这不起作用,因为helloworld函数已经在使用它)、“helloworld.App2::HandlerRequest”。。。。等等

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

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

问题:

我是否需要首先在template.yaml文件中配置新的Lambda函数,或者需要调用什么来调用处理程序才能使其工作

我确信这只是一个noob错误,但我一直在谷歌上搜索,没有发现任何人遇到同样的问题。我也读过关于处理程序的AWS,但它只在概念层面上进行了描述,在实践中没有多个lambda

谢谢你的帮助


Andy

我在使用pyCharm for Python时遇到了同样的问题

我能够通过使用
解决它,因此我的文件是
app.py
,函数是
lambda\u handler
,因此我的处理程序是
app.hello\u world


需要注意的是,这与您在使用AWS web管理页面时在“处理程序”字段中看到的相同。

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

单击包名称→ 新的→ Java类→ 类型app2

导航到
App2
类的实现,并单击排水沟中的lambda图标。您会注意到,下拉列表中添加了“创建新AWS Lambda”

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


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


感谢您的详细指导-我将尝试一下。目前,我刚刚将所有对函数的调用打包到一个处理程序中,但仍然需要将其分离在玩了几天项目结构之后,我有了一种直觉,即每个lambda都应该位于一个单独的Java模块中,因为每个lambda都是独立编译、打包、发送到S3存储桶并部署的。如果我在同一个类上保留多个lambda处理程序,那么每个lambda部署将为所有其他lambda编译代码。它将减慢部署速度,并使用比S3中所需更多的空间。。。应用程序中有两个单独的帮助工具提示,都没有回答这个基本问题,谢谢!