Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从AWS Lambda在AWS EC2实例上执行JAR_Java_Amazon Web Services_Amazon Ec2_Aws Lambda - Fatal编程技术网

Java 如何从AWS Lambda在AWS EC2实例上执行JAR

Java 如何从AWS Lambda在AWS EC2实例上执行JAR,java,amazon-web-services,amazon-ec2,aws-lambda,Java,Amazon Web Services,Amazon Ec2,Aws Lambda,我有一个在AWS Lambda上运行的Java程序和一个带有jar文件的EC2实例 为了执行jar,我使用ssh手动连接到实例: ssh -i "key.pem" user@instanceDNS java -cp myJar.jar com.example.Main 是否有任何解决方案可以通过编程直接从Lambda执行这个jar 另外,如果每次实例启动后自动执行这个jar是一个解决方案,那么它也会很有帮助,因为我必须每天启动实例,然后运行这个jar,然后停止实例 这就是我启动实例的方式。启动

我有一个在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。

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

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

您可能需要在命令中提供java的完整路径和jar文件。那么只需要启动和停止实例的过程,就不需要再自动启动Java过程。

代码实际上必须在这个EC2实例上运行吗?它可以在Lambda中运行吗?不幸的是,是的,这部分代码不能在Lambda中运行。可能会触发脚本在启动时从EC2实例本身内部运行,例如通过rc.local if Linux(或您操作系统上的等效程序)。设置一个脚本,在实例启动时执行JAR文件(甚至可能在完成时自动停止实例)。或者将SSM运行命令视为从lambda执行EC2实例上的脚本的一种方法。