是否可以通过远程MYSQL数据库调用或触发AWS lambda?
在远程MYSQL数据库表(托管在本地机器上)中插入数据时,还应通过lambda将数据插入RDS MYSQL数据库表:是否可以通过远程MYSQL数据库调用或触发AWS lambda?,mysql,aws-lambda,amazon-rds,Mysql,Aws Lambda,Amazon Rds,在远程MYSQL数据库表(托管在本地机器上)中插入数据时,还应通过lambda将数据插入RDS MYSQL数据库表: CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW BEGIN SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging; CALL local_
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
我的要求:
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
- 我尝试了将RDS连接到RDS的常用方法
- 在这里,我创建了一个触发器,然后在本地数据库中创建了一个具有LAMBDA\u ARN的存储过程,以便在本地表中插入数据后调用LAMBDA
- 其中lambda将在RDS MYSQL表中插入相同的数据
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
我的本地数据库中的过程如下:
CREATE TRIGGER local_to_rds AFTER INSERT ON mark2 FOR EACH ROW
BEGIN
SELECT NEW.sno, QUOTE(NEW.name), IFNULL(NEW.geoloc,0), NEW.ranging INTO @sno, @name, @geoloc, @ranging;
CALL local_to_rds_Procedure(@sno, @name, @geoloc, @ranging);
end
CREATE PROCEDURE local_to_rds_procedure (IN sno int, IN name varchar(50), IN geoloc int, IN ranging int) LANGUAGE sql begin
CALL mysql.lambda_async('arn:aws:lambda:us-west-2:919585521528:function:local_to_rds',
CONCAT('{ "sno" : "', sno,
'", "name" : "', name,
'", "geoloc" : "', geoloc,
'", "ranging" : "', ranging,'"}'));
END
现在,我已经创建了一个lambda,用于将本地数据库连接到RDS数据库,也用于一些其他用途,如在我的表中每次插入(或)更新(或)删除时通知我是否有任何错误,自动创建日志表,等等。。。我没有任何问题
我在这里面临的问题是连接,在创建了用于调用lambda的触发器和过程之后,我得到了SQL错误[1305][42000]:过程my.SQL.lambda_async不存在
我尝试浏览解决方案,但找不到合适的解决方案
这是我正在尝试的流程的视图:
本地数据库-->LAMBDA-->AWS\u RDS
我遇到的问题是在本地数据库表中插入数据时调用lambda。。。而且我也不知道如果我通过这个测试,我会面临什么样的错误
先谢谢你 您在哪里看到本地MySQL服务器中应该提供
lambda\u async
?我只在AWS Aurora的MySQL版本中看到了该功能
对于您尝试执行的操作,您需要通过API网关向世界公开Lambda函数,然后从MySQL过程向该API网关端点公开该函数。是否可以在windows中为MySQL创建UDF!?所以我可以通过过程调用API…@NaveenB快速搜索使它看起来是可能的: