Я пытаюсь добавить триггер в таблицу на Amazon Aurora, но когда я запускаю следующую команду CREATE TRIGGER
, ничего не происходит:
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 и вижу, как некоторые люди упоминают о необходимости включить log_bin_trust_function_creators
в параметрах «Группы параметров» консоли AWS, если вы хотите использовать триггеры, но это доступно только для параметра mysql5.5+. групповая семья. Если вы хотите вызывать функции в Lambda, эта опция доступна только в группе семейства параметров aurora5.6. Казалось бы, нельзя делать и то, и другое.
ОДНАКО! Вы должны уметь делать и то, и другое; есть много примеров, даже от самого Amazon, где это кажется вполне возможным:
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Lambda.html (см.: Пример: вызов функции AWS Lambda для публикации события из триггера)
Так что я в замешательстве. Кто-нибудь еще заставил этот процесс работать?