当我尝试向用户授予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。
根据文档,这些函数应该是我的极光版本的原生函数。
使用Aurora MySQL 1.16及更高版本时,可以调用本机函数lambda_sync和lambda_async。
mysql> select AURORA_VERSION();
+------------------+
| AURORA_VERSION() |
+------------------+
| 2.01.1 |
+------------------+
1 row in set (0.10 sec)
lambda_sync和lambda_async函数是内置的,本机的 同步或调用Lambda函数的函数 异步。
我已经浏览了文档,使用mysql 5.7兼容性创建了一个极光实例,使用lambda调用权限在我的数据库集群上创建了一个角色,并完成了文档中建议的其他六个事情。我错过了什么?
答案 0 :(得分:4)
目前,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 ......他们是两个不同的版本系列。原生Lambda调用函数在2.x(尚未)中不可用。
答案 1 :(得分:2)
我正在运行一个AWS Aurora 2.02.2实例,尽管本机Lambda调用功能仍不可用,但它确实支持使用mysql.lambda_async存储过程调用
CALL mysql.lambda_async('<<<<< AWS LAMBDA ARN GOES HERE >>>>>>', options);
并且使用此存储过程不需要显式的GRANT INVOKE LAMBDA特权即可运行它。一旦我正确设置了AWS中为RDS访问我的lambda函数所需的IAM角色,它就对我有用。
上面的调用中的 options 是一个JSON对象,带有要传递给函数的参数,由Node.JS 8.10处理函数中的event参数接收。
希望这对于现在需要该功能的人很有帮助。希望AWS端口在不久的将来对本机功能提供支持,但在那之前对我来说还可以。
答案 2 :(得分:1)
尝试允许mysql.lambda_sync / mysql.lambda_async授予您的用户:
GRANT EXECUTE ON PROCEDURE mysql.lambda_async TO 'your_user'@'%'
答案 3 :(得分:0)
从2020年5月16日起,我正在AWS Aurora MySQL 2.07.2上运行,并且可以确认它最终看起来好像启用了lambda_async和lambda_sync本机函数并正在工作。它们可能最近已被亚马逊默默启用,但尚未公开宣布。其他人可以确认吗?