You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何每日自动将AWS RDS PostgreSQL数据库备份存储至S3?

解决AWS Lambda中缺少psql工具无法备份RDS PostgreSQL的方案

方案1:通过Lambda层添加psql/pg_dump二进制文件

  • 操作步骤:
    1. 在Amazon Linux 2环境(与Lambda运行环境一致)中,安装适配的PostgreSQL客户端工具:执行 sudo amazon-linux-extras install postgresql14,然后从/usr/bin目录复制pg_dump和psql二进制文件。
    2. 创建bin目录,将复制的文件放入其中,打包成zip包(注意zip结构需直接包含bin目录,而非嵌套)。
    3. 在AWS控制台创建Lambda层,上传该zip包,选择与你的Lambda函数兼容的运行时(如Python 3.9/3.10)。
    4. 将层关联到备份Lambda函数,在函数代码中添加路径配置:os.environ['PATH'] = os.environ['PATH'] + ':' + '/opt/bin'(Lambda层内容会挂载到/opt目录)。
    5. 配置完成后,脚本即可正常调用pg_dump命令生成备份文件。

方案2:使用RDS自动快照+快照导出到S3

  • 这是AWS原生备份方案,无需自定义脚本:
    1. 开启RDS实例的自动快照功能,在控制台数据库实例配置中设置每日备份的保留周期。
    2. 创建CloudWatch Events规则,定时触发Lambda函数(或直接用AWS CLI)执行快照导出:
      • 用boto3调用start_export_task方法,指定目标快照ARN、S3存储桶、具备RDS快照导出和S3写入权限的IAM角色。
    3. 导出完成后,备份文件会自动存储到指定S3桶,还可配置S3生命周期规则自动清理旧备份。

方案3:用ECS Fargate/EC2运行备份脚本

  • 适合需要高度自定义备份逻辑的场景:
    1. ECS Fargate:构建包含Python、psql工具的Docker镜像并推送到ECR,创建Fargate任务定义,通过CloudWatch Events定时触发任务执行备份脚本,任务完成后自动销毁容器。
    2. EC2实例:启动低成本EC2实例(如t3.nano),安装psql和Python环境,将备份脚本部署到实例上,通过cron设置每日定时执行。需给实例配置具备RDS访问和S3写入权限的IAM角色。

内容的提问来源于stack exchange,提问作者rangarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:45:37