AWS或Azure如何在偶尔使用时自动关闭实例

40次阅读
没有评论

问题描述

是一个小团队,希望在承诺购买任何内部设备之前,通过云平台使用更强大的硬件来进行更强大的分析。他们希望能够上传数据到云端,启动一个实例来运行需要的任务,然后在保留数据和软件(如R包)的同时关闭实例。他们希望能够自动关闭计算实例,如果一段时间内没有使用或者在每天的特定时间关闭。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在AWS中,有几种不同的方法可以实现这个需求。
1. 最简单的方法是创建一个新的CloudWatch Events Rule,将其”Event Source”设置为按计划运行,并将”Target”设置为EC2 StopInstances API调用,并提供实例ID。以下是一个示例截图:
AWS或Azure如何在偶尔使用时自动关闭实例
在这个示例中,每天午夜都会启动一个事件,并通过实例ID停止实例。你可以使用cron表达式来更改计划。参考:https://crontab.guru
2. 你可以使用AWS Lambda函数实现任何自定义逻辑,并安排它们在各种AWS服务(包括CloudWatch Events)上运行。例如,使用Lambda函数,你可以实现根据标签(如”GoodBefore=2018-08-10″)查找实例并停止这些实例的逻辑。事实上,你甚至可以使用API Gateway来公开一个API,用于请求实例,只有在”GoodBefore”标签之后的几天内才会终止。
当然,这种方式更加可定制和复杂,如果你没有编程经验,可能会比较困难。
3. 如果你不想使用Lambda实现自定义逻辑,但又需要比CloudWatch Events提供的更多功能,你可以使用AWS提供的Instance Scheduler解决方案。这是与我在前一种方法中描述的类似的解决方案,但这次AWS已经为你做了艰苦的工作。
请注意,虽然我自己没有使用过Instance Scheduler,但我相当确定它不会决定这些事情,我认为它只有在实例上发出停止调用时才有意义。
无论是由自动化解决方案还是你自己触发的任何停止事件,如果你的实例的根卷是”EBS-backed”,它将保留数据。如果是”instance store backed”,它将丢失数据。你可以从AWS EC2控制台找到这些信息。如果你想在停止实例后保留数据,请确保在创建新实例时所有卷都是EBS-backed。

方案2

在Azure中,这个功能已经可用了几年,只需勾选一个框并设置关闭时间即可。你还可以在关闭时触发Webhook,以便在关闭时接收通知、运行脚本或执行其他操作。
此外,在Azure上还有预配置的数据科学VM和深度学习VM,其中包含了所需的所有工具,包括已安装的R。你只需选择一个大小并启动一个VM。你可以选择一个较小的大小来尝试软件,或者选择一个带有多个GPU的大小,所有这些都已经设置好了工具,可以立即使用。你甚至可以根据需要在同一台机器上以不同的大小重新启动!
当VM未运行时,你只需支付所使用的存储费用。

正文完