【问题标题】:AWS lambda for automated restore from s3 to rdsAWS lambda 用于从 s3 到 rds 的自动还原
【发布时间】:2018-10-31 19:14:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-rds


    【解决方案1】:

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

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

    要查询数据库,您需要在 Lambda 的部署包中包含 psycopg2。有关如何执行此操作的详细信息,请参阅https://github.com/jkehler/awslambda-psycopg2

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

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

    【讨论】:

    • 很好解释。谢谢你 。干杯!
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2021-02-12
    • 2021-06-10
    • 2019-04-29
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多