以前,我已经创建了一个解决方案,为此,我每天晚上使用EC2在cron作业上运行golang binary
,该作业将下载xml文件,对其进行解析,然后将数据导入MySQL数据库,然后删除该文件。
我有兴趣知道是否可以采取更多有趣的方法。对于我阅读的有关AWS服务的所有内容,该EC2实例解决方案对我来说似乎是过时的。今天,我将基于EC2构建的数据库移至具有公共可访问性的RDS实例。
我听说过人们谈论lambdas
,但是我从未真正对它进行过任何研究。
总之,无论如何,id希望引起人们对执行golang binary
的创造性解决方案的关注,包括从api下载文件,与RDS通信以及每晚(甚至每天两次)删除文件。 )。 CPU性能是关键因素
最佳答案
由于您需要超过512MB的磁盘空间和超过15分钟的执行时间,因此不适合使用AWS Lambda函数。
启动一个临时Amazon EC2实例,该实例在完成一项工作后自动关闭,这不会被认为是过时的。它在需要时使用资源,而在空闲时不花费任何费用。
要完全有弹性:
需要处理时触发新实例的启动
使用用户数据脚本来安装必要的软件并开始执行(或者,从已经加载了软件的AMI启动实例,然后通过用户数据脚本简单地开始执行)
处理完成后,实例可以自行终止。最简单的方法是在启动实例时设置Shutdown Behavior = Terminate
,然后在作业完成时关闭操作系统(例如sudo shutdown now -h
)。
触发实例的启动:
如果您有另一个永久EC2实例(甚至是普通计算机),则可以使用cron
或“计划任务”来触发命令。
或者,您可以创建触发AWS Lambda函数的Amazon CloudWatch Event。 Lambda函数然后可以调用RunInstances()
命令。
关于mysql - EC2操作的明智替代解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797473/