如何在Aurora中启用lambda_sync/lambda_async及解决权限授予报错
解决Aurora MySQL中Lambda相关的权限与函数问题
我来一步步帮你搞定这两个问题——Aurora MySQL的Lambda集成逻辑和标准MySQL有不少区别,咱们逐个拆解:
问题1:GRANT INVOKE LAMBDA触发语法错误
首先得明确:这个语法本身就不是Aurora MySQL支持的。Aurora和Lambda的交互权限不是通过MySQL原生的GRANT语句管控的,而是依赖AWS IAM角色来实现Lambda调用权限的授权。
正确的权限配置步骤是:
- 先创建一个IAM角色,给它附加包含
lambda:InvokeFunction动作的权限策略(可以用现成的AWSLambdaRole托管策略,或者自定义策略指定你要调用的Lambda ARN)。 - 把这个IAM角色关联到你的Aurora MySQL集群(在AWS控制台的集群详情页,找到「关联IAM角色」选项,选择刚创建的角色即可)。
- 最后给你的数据库用户授予Lambda函数的执行权限(因为
lambda_sync/lambda_async是数据库函数,需要EXECUTE权限):GRANT EXECUTE ON FUNCTION lambda_sync TO 'myuser'@'myaddress'; GRANT EXECUTE ON FUNCTION lambda_async TO 'myuser'@'myaddress';
问题2:lambda_sync/lambda_async函数未定义 & 启用方法
这两个函数属于Aurora MySQL的可选插件功能,默认不会自动启用,需要手动安装对应的插件:
- 先确认你的Aurora集群是MySQL 5.7兼容版本及以上(该插件从Aurora MySQL 5.7开始支持,8.0版本也完全兼容)。
- 使用集群的管理员账号(比如创建集群时的主用户)执行插件安装语句:
INSTALL PLUGIN aws_lambda SONAME 'aws_lambda.so'; - 验证插件是否成功启用:
如果返回的SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'aws_lambda';PLUGIN_STATUS为ACTIVE,就说明插件已经生效了。 - 现在你就可以正常调用
lambda_sync("arn:aws:lambda:ap-southeast-1:xx...")或者lambda_async(...)函数了。
小贴士:如果你的Aurora集群包含多个只读实例,插件安装在主实例后,只读实例会自动同步这个配置,不需要单独操作。
内容的提问来源于stack exchange,提问作者ellipse-of-uncertainty
相关产品推荐
相关产品推荐

