【问题标题】:How can I schedule Postgres queries to run on Amazon RDS?如何安排 Postgres 查询在 Amazon RDS 上运行?
【发布时间】:2017-07-23 13:01:46
【问题描述】:
我尝试安装 pgAgent,但由于亚马逊不支持它,我不知道如何在不直接使用 Cron 作业和 psql 的情况下安排 postgres 作业。这是我在 Amazon RDS 上得到的:
以下命令给出了相同的结果:
CREATE EXTENSION pg_cron;
【问题讨论】:
标签:
postgresql
scheduled-tasks
amazon-rds
【解决方案1】:
为此,我现在一共有三个选项:
1.)AWS Lambda
2.)AWS 胶水
3.)任何小型 EC2 实例(Linux/Windows)
1.)AWS Lambda:
您可以使用 pg8000 或 psycopg2 等 postgres connectvity python 模块来连接并创建光标到您的目标 RDS。
您可以将您的 sql 作业代码/您的 SQL 语句作为输入传递给 lambda。如果它们很少,您可以在您的 lambda 中编写整个作业,如果没有,您可以使用 DynamoDB 将其作为输入传递给 lambda。
您可以使用 cloudwatch 事件制定 cron 计划,以便在您需要时触发 lambda。
所需工具:DynamoDB、AWS Lambda、Python、Postgres python 连接模块。
2.)AWS Glue
AWS Glue 的工作原理也几乎相同。您可以选择直接在那里连接到您的 RDS 数据库,并且可以在那里安排您的作业。
3.)Ec2 实例:
创建任何小型 ec2 实例(Windows 或 linux)并设置您的 cron/bat 作业。
【解决方案2】:
2018 年 10 月 10 日,AWS Lambda 推出了对长时间运行函数的支持。客户现在可以将其 AWS Lambda 函数配置为每次执行最多运行 15 分钟。以前,Lambda 函数的最长执行时间(超时)为 5 分钟。使用运行时间更长的函数,这是一项要求很高的功能,客户可以更高效地执行大数据分析、批量数据转换、批处理事件处理和统计计算。