Когда я пытаюсь предоставить привилегии ПРИЗЫВАТЬ ЛАМБДУ своему пользователю, происходит сбой с синтаксической ошибкой:
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.
Согласно документации, эти функции должны быть встроены в мою версию aurora.
You can call the native functions lambda_sync and lambda_async when you use Aurora MySQL version 1.16 and later.
mysql> select AURORA_VERSION();
+------------------+
| AURORA_VERSION() |
+------------------+
| 2.01.1 |
+------------------+
1 row in set (0.10 sec)
The lambda_sync and lambda_async functions are built-in, native functions that invoke a Lambda function synchronously or asynchronously.
Я просмотрел документацию, создал экземпляр aurora с использованием совместимости с mysql 5.7, создал роль в моем кластере db с разрешениями на вызов лямбда-выражения и сделал еще полдюжины вещей, предложенных в документации. Что мне не хватает?
Спасибо, я не хотел, чтобы там был исправлен _.






Currently, Aurora MySQL 2.01 does not support features added in Aurora MySQL version 1.16 and later.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AuroraMySQL.Updates.20180206.html
Aurora / MySQL 2.x не является «более поздней» версией, чем Aurora / MySQL 1.x ... это два разных семейства выпусков. Собственные функции вызова Lambda недоступны в 2.x (пока).
Ух ты! Это объясняет, какая боль. Спасибо!
См. Мой комментарий ниже ... похоже, на основе моего тестирования Aurora / MySQL 2.x теперь поддерживает собственные лямбда-функции.
Я использую экземпляр 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, чтобы получить доступ к моей лямбда-функции.
Где параметры в приведенном выше вызове - это объект JSON с параметрами, которые вы хотите передать в функцию, полученными параметром события в функции-обработчике Node.JS 8.10.
Надеюсь, это будет полезно для тех, кому эта функция нужна сейчас. Надеюсь, в ближайшем будущем порты AWS будут поддерживать встроенные функции, но до тех пор у меня все работает нормально.
Попробуйте разрешить mysql.lambda_sync / mysql.lambda_async вашим пользователям:
GRANT EXECUTE ON PROCEDURE mysql.lambda_async TO 'your_user'@'%'
По состоянию на 16.05.2020 я использую AWS Aurora MySQL 2.07.2 и могу подтвердить, что наконец-то кажется, что встроенные функции lambda_async и lambda_sync включены и работают. Возможно, недавно Amazon молча включил их, но не объявил публично. Может ли кто-нибудь еще подтвердить то же самое?
Между словами в
_не должно бытьGRANT INVOKE LAMBDA ....