Amazon web services 有没有办法让github PR合并触发EC2实例启动?

Amazon web services 有没有办法让github PR合并触发EC2实例启动?,amazon-web-services,github,Amazon Web Services,Github,每当我们在github中合并拉请求时,我们都试图启动一个EC2实例 我在crontab有这个 @reboot /home/user/server-start.sh 当实例启动时,它完成了我希望发生的一切(比如git pull origin master),并且该脚本运行良好 我已经看过AWS CodeDeploy,但我看不到一种只打开一个实例的方法(该服务器通常会关闭,它只需要在合并PR时打开并执行一些操作,然后再次关闭) 我不确定最好的方法是什么,所以任何指针都会很好 以下是启动脚本和ngi

每当我们在github中合并拉请求时,我们都试图启动一个EC2实例

我在crontab有这个

@reboot /home/user/server-start.sh
当实例启动时,它完成了我希望发生的一切(比如git pull origin master),并且该脚本运行良好

我已经看过AWS CodeDeploy,但我看不到一种只打开一个实例的方法(该服务器通常会关闭,它只需要在合并PR时打开并执行一些操作,然后再次关闭)

我不确定最好的方法是什么,所以任何指针都会很好

以下是启动脚本和nginx服务器配置文件,以防它们有所帮助

/home/user/server-startup.sh

#!/bin/bash

# get latest master branch
cd /path/to/repo
sudo git pull origin master

# run standard preparation script
sudo bash /home/user/scripts/prepare-app.sh

# run any custom commands for this update
sudo bash /path/to/repo/prepare-app.sh

# change http code to 200
sudo sed -i -e 's/return 500/return 200/g' /etc/nginx/sites-available/status

# restart nginx
sudo service nginx restart

# change http code to 500
sudo sed -i -e 's/return 200/return 500/g' /etc/nginx/sites-available/status
/etc/nginx/现场可用/状态

server {
    listen      80 default_server;
    server_name status.mydomain.com;

    location / {
        return 500;
    }
}

如果实例刚刚停止,而不是终止,则可以使用AWS CLI启动实例:

aws ec2 start-instances --instance-ids i-1348636c
文件:

此代码可能由git挂钩触发:

脚本的其余部分将仅在实例完成启动后运行,因此需要对服务器进行某种健康检查


你也可以考虑CI /CD工具,如果你想要一个更易于管理的东西,比如Brime/CoDeSIP.

它是什么类型的应用程序?它是SyfYNY2REST API。这看起来像是要走的路,因为我可以在服务器上创建一个执行AWS工具命令的端点。