How to invoke a Lambda Function from an Amazon Aurora MySQL DB Cluster using native synchronous function
我创建了一个 Lambda 函数,它将获取用户的姓名和电子邮件并将其发布到 API。然后,我创建了一个将调用该 Lambda 函数的 Aurora MySQL 数据库实例。为了调用它,我创建了一个触发器:
1 2 3 4 5 6
| Time: AFTER
Event: Insert
Definition: BEGIN
CALL mysql.lambda_async ("arn:aws:lambda:eu-west-2:<id-number>:function:user-to-API", CONCAT ('{"user_first_name":"', NEW.first_name , '","user_email":"', NEW.email , '"}'));
END
Definer: master_user@ % |
但是,我想同步执行此操作,只触发一次 lambda 函数。这可以通过 Aurora MySQL 原生函数实现。但是,我尝试不使用 mysql 部分 - 使用 lambda_sync 并且总是收到相同的错误:MYSQL PROCEDURE mysql.lambda_sync does not exist OR MYSQL PROCEDURE lambda_sync does not exist。有人有这方面的经验吗?
提前感谢您的支持。
使用 SELECT 或 DO 调用本机函数 -- CALL 用于存储过程。
- 嗨@Michael,非常感谢您的回复。语法是一个问题,感谢您澄清这一点。同时,AWS 回复说,引用: for a DB cluster created in Aurora MySQL 5.7 (Aurora MySQL 2.* version) the mysql.lambda_sync procedure is not supported. In Aurora MySQL 2.* version the use of native function technique as well as 'sync' lambda procedures is not supported. 他们已经修改了文档,但仍然令人困惑。然而,归根结底,我别无选择,只能使用对 mysql.lambda_async 的调用。
对于在 2018 年 11 月 19 日面临同样问题的所有人,根据 AWS 的说法,在 Aurora MySQL 5.7(Aurora MySQL 2.* 版本)中创建的数据库集群不支持 mysql.lambda_sync 过程。在 Aurora MySQL 2.* 版本中,不支持使用本机函数技术以及"同步"lambda 过程。他们已经修改了文档,但仍然令人困惑。然而,在一天结束的时候,我不得不使用对 mysql.lambda_async 的调用。
-
抱歉,伙计,我不能,因为我不再在那家公司工作,而且代码在他们的私人仓库之一中。不幸的是,我也不记得了。从那以后就没有使用过 AWS :(。
-
不用担心,原来我们使用的 Aurora Serverless 不支持调用 lambda 函数的功能。