Java 如何从AWS Lambda在AWS EC2实例上执行JAR
我有一个在AWS Lambda上运行的Java程序和一个带有jar文件的EC2实例 为了执行jar,我使用ssh手动连接到实例: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,然后停止实例 这就是我启动实例的方式。启动
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实例上的脚本的一种方法。