2017-09-14 64 views
0

我试图触发添加到表在亚马逊极光但是当我运行以下CREATE TRIGGER命令没有反应:添加触发器调用亚马逊极光LAMBDA功能无法正常工作

delimiter $$ 
CREATE TRIGGER trigger_lambda_function_on_special_row_update 
    AFTER UPDATE ON example_table 
FOR EACH ROW 
BEGIN 
    IF NEW.special_id = 12345 THEN 
     CALL mysql.lambda_async("arn:aws:lambda:[region]:[account]:function:myfunction", CONCAT('{"param":"', NEW.id, '"}')); 
    END IF; 
END;$$ 
delimiter ; 

通过“什么也没发生”我的意思是,当我运行CREATE TRIGGER数据库仍然响应 - 我可以按Ctrl + C中断查询 - 但查询只是坐在那里什么都不做,直到我终于得到响应MySQL has gone away

服用mysql.lambda_async出触发和运行它是好的。我可以看到AWS Lambda上的调用,所以我知道这部分工作正常。

我对Aurora上的触发器做了一些阅读,如果您想使用触发器,我可以看到有些人提到需要在AWS控制台“参数组”中启用log_bin_trust_function_creators,但这仅适用于mysql5 .5+参数组系列。如果你想调用lambda函数,此选项只有aurora5.6参数家庭组中提供。看起来你不能这样做。

无论其!你必须能够做到这一点;有大量的例子摆在那里,甚至从亚马逊自己,在这似乎是完全有可能的:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Lambda.html(参见:例子:调用AWS lambda函数从触发发布事件)

所以我困惑。其他人是否使这个过程有效?

回答

0

我已经解决了自己的问题:当您运行CREATE TRIGGER,虽然极光似乎挂起它实际上已经造成了扳机,但它是不是给动作结束的确认。因此,没有问题。只是检查运行CREATE TRIGGER命令来查看它是否正常工作,不依赖于极光告诉你,你以后数据库触发器。