让Jenkins启动EC2实例并终止它

6
我有一个完整的部署工作,需要使用正在运行实例的IP来部署我的系统。
我目前拥有一台EC2实例用于每晚的自动化测试,但是该实例价格昂贵,我正在寻找一种在测试之前启动它并在测试后终止它的方法。
我寻找了可以帮助的EC2插件,最接近的是这个,但这是用于制作从节点,并不是我想要的。
我想要能够启动一个EC2实例,并将其IP地址传递给自动化测试任务,然后在完成后终止该实例。
我开始为此制作一个命令行bash文件,但是这似乎太麻烦了,我想可能有什么我还没发现的东西。

1
为什么不让 Jenkins 运行一个 shell 脚本,在该脚本内编写运行 EC2 的命令,然后再添加另一个命令在工作完成后杀死它呢? - mbn217
1个回答

6
你的需求是有效的,亚马逊也知道:
当您停止一个实例时,我们会关闭它。我们不会收取已停止实例的使用费或数据传输费用,但我们会为任何 Amazon EBS 卷的存储费用收费。
参考资料: - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html 以下是一些启动/停止实例的方法:

Amazon EC2 HTTP API

这是一个 REST API,您可以执行一个简单的 HTTP 请求来启动或停止您的实例:

https://ec2.amazonaws.com/?Action=StartInstances&...

https://ec2.amazonaws.com/?Action=StopInstances&...

你可以通过多种方式从Jenkins调用此API:简单的shell执行、Groovy和脚本化/声明式管道。

AWS CLI

这里有更多关于如何使用AWS CLI暂停实例的信息:

您可以通过许多方式从Jenkins调用此API:简单的Shell执行、Groovy和脚本化/声明性管道。


AWS实例调度器

2018年,AWS推出了AWS实例调度器,这是一种新的、改进的调度解决方案,使客户能够安排Amazon EC2实例。

使用此工具,您可以自动启动和停止Amazon EC2和Amazon RDS实例。

参考:

使用这种方法,您不需要Jenkins :b


现在我感觉很愚蠢。就会那样做。感谢详细的回答。但是在开始运行自动化套件之前,我如何知道实例确实已经启动了呢? - NotSoShabby
算了吧,找到了:aws ec2 wait instance-running --instance-ids "i-XXXXXXXX" - NotSoShabby
1
不用担心。几乎所有的AWS Web平台用户界面操作都可以通过HTTP API REST或AWS CLI完成。此外,开发一个Jenkins插件以进一步减少这些步骤也是很有意思的。 - JRichardsz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接