我已经配置了我的前置数据库服务器,每天晚上11点将备份放到aws s3中。备份使用s3标准加密加密。
我需要将加密的postgresql备份从s3恢复到RDS (运行postgres),一旦它到达s3,然后查询一些字段并使用python函数获取数据,该函数将这些数据发送到电子邮件列表。
我的问题是:我可以将AWS用于此任务而不是ec2实例吗?
发布于 2018-10-31 22:22:19
理论上,是的,你可以,但如果你沿着这条路走下去,还会面临一些挑战。
要将备份从S3还原到postgresql:您必须将pg_restore或psql二进制文件绑定到Lambda部署包中。然后,您的Lambda代码将不得不将备份S3文件下载到Lambda的/tmp文件夹(注意Lambda的/tmp文件夹的限制为512 MB ),或者将S3文件的内容流到pg_restore/psql 通过stdin。要调用psql或pg_restore,您应该使用Python的子过程模块。小心大备份,不要在内存中加载整个备份文件:您可能会超过Lambda的RAM限制。
要查询数据库,您需要在Lambda的部署包中包含psycopg2。有关如何执行此操作的详细信息,请参见https://github.com/jkehler/awslambda-psycopg2。
要通过电子邮件发送数据,您应该考虑使用AWS SES。
就我个人而言,我可能会使用一个Docker容器来实现这个目标(使用AWS ECS或批处理)。这样,安装必要的二进制文件(pg_restore/psql,psycopg2)可能会更容易。此外,您将避免Lambda固有的限制(15分钟执行时间限制,最大/tmp大小,内存限制)。
https://stackoverflow.com/questions/53090491
复制相似问题