Amazon web services AWS lambda用于从s3到rds的自动恢复

Amazon web services AWS lambda用于从s3到rds的自动恢复,amazon-web-services,amazon-s3,aws-lambda,amazon-rds,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Rds,我已经将我的本地数据库服务器配置为每天晚上11点将备份放入aws s3。备份使用s3标准加密进行加密 一旦到达s3,我需要将这个加密的postgresql备份从s3恢复到RDS(运行postgres),然后查询一些字段并使用python函数获取数据,该函数将这些数据发送到电子邮件列表 我的问题是:我可以使用AWS lambda来完成这个任务而不是ec2实例吗?理论上,是的,你可以,但是如果你沿着这条路走下去,前面会有一些挑战 要将备份从S3恢复到postgresql,您必须将pg_restore

我已经将我的本地数据库服务器配置为每天晚上11点将备份放入aws s3。备份使用s3标准加密进行加密

一旦到达s3,我需要将这个加密的postgresql备份从s3恢复到RDS(运行postgres),然后查询一些字段并使用python函数获取数据,该函数将这些数据发送到电子邮件列表


我的问题是:我可以使用AWS lambda来完成这个任务而不是ec2实例吗?

理论上,是的,你可以,但是如果你沿着这条路走下去,前面会有一些挑战

要将备份从S3恢复到postgresql,您必须将
pg_restore
psql
二进制文件捆绑到Lambda部署包中。然后,您的Lambda代码必须将备份S3文件下载到Lambda的
/tmp
文件夹(注意
/tmp
文件夹中512 MB的Lambda),或者将S3文件的内容流式传输到
pg_restore
/
psql
。要调用
psql
pg_restore
,您应该使用Python的模块。使用大型备份时要小心,不要将整个备份文件加载到内存中:可能会超过Lambda的RAM限制

要查询数据库,您需要在Lambda的部署包中包含psycopg2。有关如何执行此操作的详细信息,请参阅

要通过电子邮件发送数据,您应该考虑使用


就个人而言,我可能会使用Docker容器来实现这一点(使用AWS或)。这样,安装必要的二进制文件可能会更容易(
pg_restore
/
psql
,psycopg2)。此外,您将避免Lambda的固有限制(15分钟执行时间限制,最大
/tmp
大小,RAM限制)。

解释得很好。非常感谢。干杯