【问题标题】:How to execute JAR on AWS EC2 instance from AWS Lambda如何从 AWS Lambda 在 AWS EC2 实例上执行 JAR
【发布时间】:2020-06-24 12:29:31
【问题描述】:

我有一个在 AWS Lambda 上运行的 Java 程序和一个带有 jar 文件的 EC2 实例。

为了执行 jar,我使用 ssh 手动连接到实例:

ssh -i "key.pem" user@instanceDNS
java -cp myJar.jar com.example.Main

是否有任何解决方案可以直接从 Lambda 以编程方式执行此 jar?

另外,如果是每次实例启动后自动执行这个 jar 的解决方案,它也会有所帮助,因为我必须每天启动实例,然后运行这个 jar,然后停止实例。

这就是我启动实例的方式。启动后,我必须执行jar:

StartInstancesRequest startInstancesRequest = new StartInstancesRequest()
          .withInstanceIds(INSTANCE_ID);
  ec2Client.startInstances(startInstancesRequest);

它启动后,我必须执行jar。

【问题讨论】:

  • 代码真的必须在这个 EC2 实例上运行吗?它可以在 Lambda 中运行吗?
  • 很遗憾,是的,这部分代码无法在Lambda中运行。
  • 可能会在启动时触发脚本从 EC2 实例本身内部运行,例如如果是 Linux(或您的操作系统上的等效版本),则通过 rc.local。设置一个脚本,在实例启动时执行您的 JAR 文件(甚至可能在完成时自动停止实例)。或者考虑将 SSM 运行命令作为从 Lambda 在 EC2 实例上执行脚本的一种方式。

标签: java amazon-web-services amazon-ec2 aws-lambda


【解决方案1】:

要在每次服务器启动时运行命令,您应该将此条目添加到服务器的 crontab:

@reboot java -cp myJar.jar com.example.Main

您可能需要提供 java 的完整路径以及命令中的 jar 文件。然后,您只需启动和停止实例的流程,您将不再需要自动化启动 Java 流程的流程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 2020-09-29
    • 2018-09-01
    • 2019-11-10
    • 1970-01-01
    • 2017-12-02
    • 2016-06-01
    • 2015-07-13
    相关资源
    最近更新 更多