Amazon web services 如何自动启动、执行和停止EC2?

Amazon web services 如何自动启动、执行和停止EC2?,amazon-web-services,testing,amazon-ec2,continuous-integration,gpu,Amazon Web Services,Testing,Amazon Ec2,Continuous Integration,Gpu,我想每天在GPU机器上测试一次Python库。 我决定使用AWSEC2进行测试。 但是,gpu机器的费用非常高,所以我想在测试结束后停止实例 因此,我想每天自动完成以下一次 启动EC2实例(手动设置) 执行命令(测试->将日志推送到S3) 停止EC2(不移除) 如何执行此操作?您可以使用aws cli 要启动实例,请执行以下操作 aws ec2 start-instances --instance-ids i-1234567890abcdef0 aws ec2 stop-instances -

我想每天在GPU机器上测试一次Python库。 我决定使用AWSEC2进行测试。 但是,gpu机器的费用非常高,所以我想在测试结束后停止实例

因此,我想每天自动完成以下一次

  • 启动EC2实例(手动设置)
  • 执行命令(测试->将日志推送到S3)
  • 停止EC2(不移除)

  • 如何执行此操作?

    您可以使用aws cli

    要启动实例,请执行以下操作

    aws ec2 start-instances --instance-ids i-1234567890abcdef0
    
    aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    
    要停止该实例,请执行以下操作

    aws ec2 start-instances --instance-ids i-1234567890abcdef0
    
    aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    
    要在机器内部执行命令,需要ssh到机器中并运行所需的命令,然后可以使用aws cli将文件上载到s3

    aws s3 cp test.txt s3://mybucket/test2.txt
    

    我建议您阅读aws cli文档,您将找到自动化aws命令所需的大部分(如果不是全部的话)。

    您可以使用aws cli

    要启动实例,请执行以下操作

    aws ec2 start-instances --instance-ids i-1234567890abcdef0
    
    aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    
    要停止该实例,请执行以下操作

    aws ec2 start-instances --instance-ids i-1234567890abcdef0
    
    aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    
    要在机器内部执行命令,需要ssh到机器中并运行所需的命令,然后可以使用aws cli将文件上载到s3

    aws s3 cp test.txt s3://mybucket/test2.txt
    

    我建议您阅读aws cli文档,您将找到自动化aws命令所需的大部分(如果不是全部的话)。

    您可以将脚本日志推送到自定义coudwatch命名空间。比如进程结束时,将状态发布到cloudwatch。在cloudwatch中,根据进程的状态创建警报,因此,如果它具有已完成状态,则会触发AWS lambda函数,该函数将在您的作业完成后停止实例


    另外,如果您想在特定时间启动和停止,可以使用ec2实例调度器来启动/停止实例。它只是在特定的时间间隔内像cron作业一样工作。

    您可以将脚本日志推送到自定义coudwatch命名空间。比如进程结束时,将状态发布到cloudwatch。在cloudwatch中,根据进程的状态创建警报,因此,如果它具有已完成状态,则会触发AWS lambda函数,该函数将在您的作业完成后停止实例

    另外,如果您想在特定时间启动和停止,可以使用ec2实例调度器来启动/停止实例。它只是在特定的时间间隔内像cron作业一样工作。

    它非常简单

    启动时运行脚本

    要在实例启动时自动运行脚本(每次启动,而不仅仅是第一次),请将脚本放在以下目录中:

    /var/lib/cloud/scripts/per-boot/
    
    测试完成后停止实例

    只需在脚本末尾向操作系统发出关闭命令:

    sudo shutdown now -h
    
    这很简单

    启动时运行脚本

    要在实例启动时自动运行脚本(每次启动,而不仅仅是第一次),请将脚本放在以下目录中:

    /var/lib/cloud/scripts/per-boot/
    
    测试完成后停止实例

    只需在脚本末尾向操作系统发出关闭命令:

    sudo shutdown now -h
    

    我创建了一个shell脚本来启动一个EC2实例—如果还没有运行—通过SSH连接,如果需要,运行一个命令

    您可以通过三种不同的方式使用它:

    /ec2-start-and-ssh.sh-i-s

    将显示有关实例的状态信息:运行状态以及私有和公共IP地址

    /ec2-start-and-ssh.sh-i

    将连接并将您留在默认shell中

    /ec2-start-and-ssh.sh-i

    将运行您指定的任何命令,例如:

    /ec2-start-and-ssh.sh-i./run.sh

    /ec2-start-and-ssh.sh-i sudo关机

    我使用最后两个命令来运行周期性作业,以最小化计费成本


    我希望这有帮助

    我创建了一个shell脚本来启动EC2实例—如果还没有运行—通过SSH连接,如果需要,运行一个命令

    您可以通过三种不同的方式使用它:

    /ec2-start-and-ssh.sh-i-s

    将显示有关实例的状态信息:运行状态以及私有和公共IP地址

    /ec2-start-and-ssh.sh-i

    将连接并将您留在默认shell中

    /ec2-start-and-ssh.sh-i

    将运行您指定的任何命令,例如:

    /ec2-start-and-ssh.sh-i./run.sh

    /ec2-start-and-ssh.sh-i sudo关机

    我使用最后两个命令来运行周期性作业,以最小化计费成本


    我希望这有帮助

    是否可以在../per boot下启动实例而不执行脚本?我想在放入脚本后登录实例,但它关闭了实例。我想您已经安装了脚本?这是一个有趣的情况。。。如果脚本没有长时间运行(或出现错误),它将很快关闭。我认为您需要分离磁盘,将其连接到另一个EC2实例,然后从该目录中删除脚本,然后将磁盘放回原处。如果存在特定标记,可能需要修改脚本,使其不关闭,以允许出现这种情况。是否可以在../per boot下启动实例而不执行脚本?我想在放入脚本后登录实例,但它关闭了实例。我想您已经安装了脚本?这是一个有趣的情况。。。如果脚本没有长时间运行(或出现错误),它将很快关闭。我认为您需要分离磁盘,将其连接到另一个EC2实例,然后从该目录中删除脚本,然后将磁盘放回原处。如果存在特定的标记,修改脚本使其不关闭可能是值得的,以允许出现这种情况。