【发布时间】:2022-01-09 22:40:06
【问题描述】:
我有一个可以在本地运行的项目,但它在 AWS 上失败了。要在本地运行项目,我先执行sam build,然后执行sam local start-api --host 0.0.0.0。然后我打电话给http://localhost:3000/skill2/task1 并得到你好世界的回应。当我调用 api 网关 https://p4x0n2nemc.execute-api.us-east-2.amazonaws.com/Prod/skill2/task1 时,它失败了。我在 cloudwatch 中看到的错误是
Class not found: helloworld.App: java.lang.ClassNotFoundException
java.lang.ClassNotFoundException: helloworld.App. Current classpath: file:/var/task/
我使用此命令创建了 helloworld 应用程序并将其复制到我的 AWS Lambda 应用程序中。
sam init --name java11-demo-app --runtime java11 --dependency-manager gradle --app-template hello-world
这里是带有 Java 资源的 AWS Lambda 应用程序的 Github 存储库
https://github.com/bennebbenneb/sample-app
如何更新此 AWS Lambda 应用程序,以便它在 NodeJS 资源之外创建 Java 资源?我不想手动压缩 Java 项目并上传它。我希望将 Java 代码构建为管道的一部分。
本地构建输出sam build
在本地主机上工作的 Java Lambda
可以从 AWS 控制台创建 AWS Lambda 应用程序。这些是 CloudFormation 项目。 https://us-east-2.console.aws.amazon.com/lambda/home?region=us-east-2#/create/application
【问题讨论】:
-
你想同时运行 java 和 node js 吗?
-
@AnandVarkeyPhilips 我试图让项目构建一个 lambda 是 NodeJS 和另一个单独的 lambda 是 Java。这在我的本地主机上工作
-
#1 你的问题解决了吗? #2 您是否尝试在 aws 上的 nodejs lambda 中执行 java 代码? #3 为什么不用纯nodejs或者纯java实现呢?
-
@JRichardsz #1 我现在更好地理解了这个问题,但还没有解决。如果没有更简单的解决方案,我计划在赏金到期之前接受下面的答案。 #2 我正在尝试从项目中创建 2 个单独的 lambda。一个 lambda 是 Java,另一个是 NodeJS。 #3 每个 lambda 只用一种语言编写。此外,没有选择预安装 Java 的 Docker 映像的选项,只有 NodeJS。我希望 AWS 允许我们在未来自定义构建映像以简化此操作
标签: java amazon-web-services aws-lambda amazon-cloudformation aws-sam