如何在aurora中启用lambda\u sync/lambda\u async函数

yebdmbv4  于 2021-06-23  发布在  Mysql
关注(0)|答案(4)|浏览(452)

当我尝试向用户授予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\u sync和lambda\u 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\u sync/mysql.lambda\u async。
根据文档,这些函数应该是我的aurora版本所固有的。
使用aurora mysql 1.16及更高版本时,可以调用本机函数lambda\u sync和lambda\u async。

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

lambda\u sync和lambda\u async函数是内置的本机函数,可以同步或异步调用lambda函数。
我已经阅读了文档,使用mysql 5.7兼容性创建了一个aurora示例,使用lambda invoke权限在我的db集群上创建了一个角色,并完成了文档中建议的六件其他事情。我错过了什么?

6ioyuze2

6ioyuze21#

尝试将mysql.lambda\u sync/mysql.lambda\u async允许给您的用户:

GRANT EXECUTE ON PROCEDURE mysql.lambda_async TO 'your_user'@'%'
b09cbbtk

b09cbbtk2#

从2020年5月16日起,我运行的是aws aurora mysql 2.07.2,我可以确认lambda\u async和lambda\u sync本机函数最终似乎已启用并正常工作。它们可能最近被amazon悄悄地启用了,但没有公开宣布。还有谁能证实这一点吗?

cxfofazt

cxfofazt3#

目前,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中还不可用。

kyxcudwk

kyxcudwk4#

我正在运行一个aws aurora 2.02.2的示例,尽管本机lambda调用函数仍然不可用,但它确实支持mysql.lambda\u异步存储过程调用,使用

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

并且使用这个存储过程不需要显式的grant invoke lambda特权来运行它。一旦我在aws中正确设置了iam角色,rds就可以访问lambda函数了。
其中,上述调用中的选项是一个json对象,其中包含要传递到函数中的参数,由node.js 8.10处理程序函数中的event参数接收。
希望这对现在需要这个功能的人有所帮助。希望aws端口在不久的将来支持本机函数,但在那之前,这对我来说还不错。

相关问题