Как вызвать лямбда-функцию из кластера БД Amazon Aurora MySQL, используя встроенную синхронную функцию - PullRequest
0 голосов
/ 16 ноября 2018

Я создал функцию Lambda, которая будет принимать имя пользователя и адрес электронной почты и публиковать их в API. Затем я создал экземпляр Aurora MySQL DB, который будет вызывать эту функцию Lambda. Чтобы вызвать его, я создал триггер как таковой:

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@%

Однако я хочу сделать это синхронно, чтобы лямбда-функция запускалась только один раз. Это возможно с собственной функцией Aurora MySQL . Тем не менее, я пробовал без части MySQL - использование lambda_sync и всегда получаю ту же ошибку: MYSQL PROCEDURE mysql.lambda_sync does not exist ИЛИ MYSQL PROCEDURE lambda_sync does not exist. У кого-нибудь есть опыт с этим?

Заранее благодарю за поддержку.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Для всех, кто сталкивается с той же проблемой по состоянию на 19 ноября 2018 года, согласно AWS, процедура mysql.lambda_sync не поддерживается для кластера БД, созданного в Aurora MySQL 5.7 (версия Aurora MySQL 2. *). В версии Aurora MySQL 2. * использование техники собственных функций и лямбда-процедур синхронизации не поддерживается. Они внесли изменения в документацию, но это все еще сбивает с толку. Однако в конце дня мне пришлось использовать звонки на mysql.lambda_async.

0 голосов
/ 17 ноября 2018

Нативные функции вызываются с помощью SELECT или DO - CALL используется для хранимых процедур.

...