【问题标题】:Is there any way we can connect AWS Lambda Function (Python) to an existing external PostgresSQL database有什么方法可以将 AWS Lambda 函数(Python)连接到现有的外部 PostgresSQL 数据库
【发布时间】:2020-09-14 04:01:57
【问题描述】:

我是 AWS 的新手,我希望将托管在 Amazon EC2 上的外部 postgres 数据库连接到 lambda 函数 (python),当特定数据插入数据库时​​会触发该函数。我搜索了很多文章,但他们在 AWS RDS 中使用了 Postgres 实例,而不是现有的外部数据库。
提前谢谢你。

【问题讨论】:

  • 您只需要在 Lambda 和您的 EC2 实例之间建立网络连接即可。如果您在不同的 VPC 中运行 Lambda,它将需要传出网络支持,为此您需要在 VPC 中设置 NAT 网关。如果它在同一个 VPC 中,则不需要它。在您的 EC2 实例上,您需要适当地打开端口以允许传入连接。最好使用安全组来限制与 EC2 Postgres 端口的连接,因为它来自 Lambda。
  • @Devesh:您能否澄清一下... PostgreSQL 数据库在 Amazon EC2 实例(不是 Amazon RDS)上运行,对吗?并且您希望在将特定数据插入该 PostgreSQL 数据库时触发 AWS Lambda 函数?如果是这样,您是否知道将数据插入 PostgreSQL 数据库如何触发对外部服务的调用的其他示例?你可以使用像 Tibco 这样的工具,它可能会运行 Change Data Capture,但我看不到任何原生 PostgreSQL 功能来触发外部代码。

标签: python postgresql amazon-web-services aws-lambda


【解决方案1】:

我认为以下 AWS 博客中描述的解决方案应该适用于任何 PostgreSQL,并且不限于 RDS:

他们甚至明确写道:

数据库可以是 Amazon RDS 或任何安装的 PostgreSQL

解决方案的关键部分是使用wal2json 插件为postgresql:

wal2json 是一个用于逻辑解码的输出插件。这意味着插件可以访问由 INSERT 和 UPDATE 生成的元组。此外,可以根据配置的副本身份访问 UPDATE/DELETE 旧行版本。可以使用流式协议(逻辑复制槽)或特殊的 SQL API 来使用更改。

使用 wal2json,对 postgresql 的更改将被感染到 Kinesis Data Streams,然后被 lambda 函数使用。

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2021-01-24
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多