Как включить функции lambda_sync / lambda_async в Авроре - PullRequest
0 голосов
/ 27 апреля 2018

Когда я пытаюсь предоставить привилегии INVOKE LAMBDA для моего пользователя, происходит сбой с синтаксической ошибкой:

mysql> GRANT INVOKE LAMBDA ON mydb.* TO 'myuser'@'myaddress';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INVOKE LAMBDA ON mydb.* TO 'myuser'@'myaddress'' at line 1

Функции lambda_sync и lambda_async также не определены:

mysql> select lambda_sync("arn:aws:lambda:ap-southeast-1:xxxxxxxxxxx:function:MyLambda", '{"operation":"ping"}');
ERROR 1305 (42000): FUNCTION mydb.lambda_sync does not exist

Я также пытался использовать mysql.lambda_sync / mysql.lambda_async здесь.

Согласно документации, эти функции должны быть родными для моей версии Авроры.

Вы можете вызывать собственные функции lambda_sync и lambda_async при использовании Aurora MySQL версии 1.16 и более поздних.

mysql> select AURORA_VERSION();
+------------------+
| AURORA_VERSION() |
+------------------+
| 2.01.1           |
+------------------+
1 row in set (0.10 sec)

Функции lambda_sync и lambda_async являются встроенными, нативными функции, которые вызывают функцию Lambda синхронно или асинхронно.

Я просмотрел документацию, создал экземпляр aurora с использованием совместимости с mysql 5.7, создал роль в моем кластере БД с разрешениями для запуска lambda и сделал еще полдюжины других вещей, предложенных в документации. Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 10 августа 2018

Я запускаю экземпляр AWS Aurora 2.02.2, и хотя встроенные функции вызова Lambda еще не доступны, он поддерживает функцию вызова хранимой процедуры mysql.lambda_async, используя

CALL mysql.lambda_async('<<<<< AWS LAMBDA ARN GOES HERE >>>>>>', options);

И использование этой хранимой процедуры не требовало явной привилегии GRANT INVOKE LAMBDA для ее запуска. Это сработало сразу после того, как я правильно настроил роли IAM, необходимые в AWS для доступа RDS к моей лямбда-функции.

Где options в приведенном выше вызове - это объект JSON с параметрами, которые вы хотите передать в функцию и получить параметром события в функции-обработчике Node.JS 8.10.

Надеюсь, что это полезно для тех, кому сейчас нужна эта функциональность. Надеемся, что поддержка портов AWS для нативных функций будет реализована в ближайшем будущем, но до тех пор у меня это работает нормально.

0 голосов
/ 29 сентября 2018

Попробуйте разрешить mysql.lambda_sync / mysql.lambda_async своим пользователям:

GRANT EXECUTE ON PROCEDURE mysql.lambda_async TO 'your_user'@'%'
0 голосов
/ 28 апреля 2018

В настоящее время Aurora MySQL 2.01 не поддерживает функции, добавленные в Aurora MySQL версии 1.16 и более поздних.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Updates.20180206.html

Aurora / MySQL 2.x не является «более поздней» версией, чем Aurora / MySQL 1.x ... это два разных семейства версий. Собственные функции вызова лямбды недоступны в 2.x (пока).

...