2017-09-14 85 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命令來查看它是否正常工作,不依賴於極光告訴你,你以後數據庫觸發器。