mysql - EC2操作的明智替代解决方案

标签 mysql amazon-web-services go amazon-rds

以前,我已经创建了一个解决方案,为此,我每天晚上使用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/

相关文章:

php - 如果一个查询包含 Null 结果,如何从多个查询打印?

amazon-web-services - AWS Dynamo无法自动缩减

xml - 尝试使用 Golang encoding/xml 将结构编码为 xml 具有交替重复模式的结构

go - 不能在函数参数中使用 true(bool 类型)作为字符串类型

docker - 如何通过golang获取容器ID

python - 如何在 kubernetes 集群内使用脚本语言连接数据库

javascript - 如何将 javascript 对象的值输入到 sql 数据库中?

amazon-web-services - AWS Elasticsearch 授权 header

amazon-web-services - 限制 IAM 用户从特定发件人发送 SES 电子邮件的 AWS 策略

mysql - 全文搜索返回空结果时出现问题