Добавление триггеров для вызова функции Lambda из Amazon Aurora не работает

Я пытаюсь добавить триггер в таблицу на 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 для публикации события из триггера)

Так что я в замешательстве. Кто-нибудь еще заставил этот процесс работать?


person Marc    schedule 14.09.2017    source источник


Ответы (1)


Я решил свой собственный вопрос: когда вы запускаете CREATE TRIGGER, хотя Aurora кажется зависшей, она фактически создала триггер, но не дает подтверждения о завершении действия. Как таковой проблемы нет. Просто проверьте триггеры вашей базы данных после запуска команды CREATE TRIGGER, чтобы убедиться, что она работает, и не полагайтесь на Aurora, чтобы сообщить вам.

person Marc    schedule 15.09.2017
comment
Является ли вызов лямбда-функций из триггера для обновления и удаления проблемой производительности? - person Udara Gunathilake; 03.08.2018