【问题标题】:RDS Service Triggering LambdaRDS 服务触发 Lambda
【发布时间】:2015-11-29 09:07:18
【问题描述】:

我是 AWS 新手,我正在寻找一种从 RDS 服务(尤其是 MYSql)触发 Lambda 的方法。有没有办法实现它? 如果没有,还有其他方法可以达到同样的效果吗?

【问题讨论】:

    标签: aws-lambda aws-rds


    【解决方案1】:

    现在有多种方法可以从 AWS RDS 和 AWS MySQL 触发 Lambda,但支持因数据库引擎而异。如果您真的对 AWS Lambda 处理的 RDS 事件消息感到好奇,请参阅此答案的以下编辑部分。


    编辑: 如果您正在寻找一种方法让 AWS Lambda 响应Event messages emitted by AWS RDS(关于集群状态而不是数据库数据事件),请read these docs注意: 同样,这与 AWS Lambda 调用和响应数据库表/记录上的数据操作事件无关。

    【讨论】:

    • 感谢您的回答。根据 RDS 事件列表(在 AWS 文档中),如果 RDS 数据库表中的数据发生更改,似乎无法调用 Lambda。我正在寻找类似于 Dynamo DBStreams 的东西。有谁知道是否可以为 RDS MySQL 实例实现类似 DBStreams 的东西?
    • 嘿@Chris,如果 RDS 表中的数据发生变化,你能弄清楚如何调用 lambda 函数吗?
    • 您可以使用 mySQL 触发器以及 LAMBDA_ASYNC() 过程或 mySQL 本机函数来实现此效果。
    • 截至 22 年 3 月 15 日,此答案已与现实过时。有关 MySQL 和 RDS 引擎的 Aurora 和 RDS 产品的完整文档,请参阅以下 @Desha 的回答。
    • @garnaat,我认为您的回答是试图专注于通过 AWS SNS 主题订阅 AWS Lambda 到 AWS RDS 事件通知,而不是根据数据库表/记录上的数据事件触发 Lambda,这是 OP 的问题.因此,我进行了编辑。
    【解决方案2】:

    如果您使用的是 AWS Aurora,则可以通过调用 mysql.lambda_async 过程来调用 AWS Lambda 函数。

    例子:

    CALL mysql.lambda_async (
      lambda_function_ARN,
      lambda_function_input
    )
    

    lambda_function_ARN

    要调用的 Lambda 函数的 Amazon 资源名称 (ARN)。

    lambda_function_input

    调用的 Lambda 函数的 JSON 格式的输入字符串。

    编辑: 更多详情请点击此处:Invoking a Lambda function from an Amazon Aurora MySQL DB cluster

    【讨论】:

    • RDS Postgres 有类似的功能吗?谢谢
    • @Kostanos 遗憾的是,Postgres RDS 目前没有这样的功能
    • @Kostanos,请检查以下用户 Desha 添加的答案,我编辑了该答案以获得更准确的文档。
    • @Dimitriy Kankalovich,您的评论链接到 PostgreSQL 在 RDS 中触发 AWS Lambda 的文档,原来的问题是关于 MySQL,所以我必须标记它。
    • @Jim Geurts,您的答案是针对 AWS Aurora,这有点相关,但 OP 问题是关于 AWS RDS 和 MySQL 引擎的。此外,文档中的链接现在已损坏,并且首先是错误的,因为您谈论 Aurora 并且文档指向 RDS,因此我将进行编辑以至少匹配 Aurora MySQL 的文档:docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/…
    【解决方案3】:

    自 2022 年 3 月 15 日起,您只能从 RDS 中的 PostgreSQL 引擎调用 AWS Lambda 函数,而不能从 MySQL 引擎调用。文档如下:

    1. Invoking an AWS Lambda function from an RDS for PostgreSQL DB instance

    您还可以从 Aurora 中的 MySQL 或 PostgreSQL 引擎调用 AWS Lambda 函数(注意:Aurora 不同于 RDS 的 AWS 服务)。两者的文档如下:

    1. Invoking an AWS Lambda function from an Aurora PostgreSQL DB cluster
    2. Invoking a Lambda function from an Amazon Aurora MySQL DB cluster

    【讨论】:

    • 如果您对答案投了反对票,请说明原因。
    猜你喜欢
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 2019-03-06
    • 2019-10-24
    • 2021-08-25
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多