【问题标题】:AWS lambda with both python and java language support具有 python 和 java 语言支持的 AWS lambda
【发布时间】:2020-08-16 07:13:48
【问题描述】:

我们的机构正在尝试为 Java 入门课程设置一个自动评分平台,我们希望使用 AWS lambda 函数进行评分。问题是,和任何理智的人一样,我们的开发团队更喜欢 python 而不是 java,所以评分器本身是用 python 编写的,但学生程序是用 java 编写的。

由于评分者必须调用学生函数,因此我们最好有一个 lambda 运行时,其中包含适用于 python 和 java 的二进制文件。有其他人知道我们该怎么做吗?

附带说明一下,可以使用单独的函数来运行 java 文件并将输出返回给 python 函数,但由于亚马逊按函数执行收费,这不太理想。

【问题讨论】:

    标签: java python automation aws-lambda


    【解决方案1】:

    您也许可以使用常规的 python 或 java 运行时执行此操作,并使用很多技巧将其他解释器引入您的环境,但这远非理想。

    您的案例需要自定义运行时 - 您可以在documentation 中找到更多信息。本质上,它们让您可以使用任何语言和/或二进制文件并将它们放入 Lambda 函数中,这样您就应该能够自己构建一个包含 python 和 java 的运行时。

    根据函数运行所需的时间,让 Fargate 容器侦听 SQS 队列并异步处理请求可能更具成本效益且更容易。 Docker 容器通常更容易构建(或至少更好理解),对于运行时间更长的任务,这很可能更具成本效益。

    【讨论】:

    • 大部分任务将在两秒内运行,最坏情况下的运行时间约为 15 秒。自动评分将与 github 教室接口,因此首选同步响应。是否可以使用 Fargate 进行同步响应?
    • 在这种情况下,您要么需要将 Fargate 容器公开到 Internet 以充当 API 端点,要么将 Fargate 容器放置在应用程序负载均衡器后面的 ECS 服务内(您甚至可以如果适合您的用例,则将 ALB 与 API 网关集成)。这将比异步版本更昂贵。运行时间长达 15 秒,您可能会遇到同步响应的超时问题,但这是另一个问题;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2021-05-23
    • 2014-08-04
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多