我在AWS上有一个postgresql db示例,我也有一个lambda函数。
我想通过我的postgresql数据库中的触发器函数调用这个lambda函数。
我发现了这个信息:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL-Lambda.html#PostgreSQL-Lambda-errors
1.我创建了一个名为“aws_lambda_rds_invoke_policy”的策略,权限为lambda:invokeFunction
。资源为'*',因为我希望此策略适用于所有(未来)lambda函数。
1.我创建了一个名为“aws_lambda_rds_role”的角色(受信任实体:AWS服务:rds),并附上该政策。
我假设这个角色是自动附加到我的rds?(如果没有,我该怎么做?))
我有以下SQL代码:
SELECT * FROM aws_lambda.invoke(
aws_commons.create_lambda_function_arn('my-lambda-function-arn', 'eu-central-1'),
'{"hello":"world"}'::json
);
我得到以下错误:
ERROR: unable to access credentials stored with the database instance
HINT: Make sure that the desired Amazon Resource Name (ARN) is associated with the feature-name: "Lambda".
CONTEXT: SQL function "invoke" statement 1. 0.000 seconds. (Line 1).
当我删除刚创建的角色并再次运行SQL代码时,它是否有效?!
不要误会我的意思,我很高兴它能工作,但我想知道为什么,因为我没有“授权”我的数据库示例运行lambda函数。
编辑:
几分钟后,它停止工作。我是否需要等待几分钟才能完成所有更改(例如添加新角色)?
2条答案
按热度按时间cedebl8k1#
在我的例子中,RDS角色配置被破坏了。角色关联已绑定到不再存在的角色。
如果有人有这个问题,试试这个:
在IAM上,
1.创建IAM策略:
1.使用RDS信任策略为数据库创建角色:
1.将IAM策略附加到数据库角色
在RDS控制台上
1.打开数据库页面
1.找到“管理IAM角色”框
1.使用“Lambda”功能将您创建的角色附加到数据库
vlju58qv2#
我也遇到了同样的挑战。下面是我所做的一切和工作ticketty布。
1.在aarch 64-unknown-linux-gnu上创建Aurora Serverless 2.0 - PostgreSQL 13.7,由aarch 64-unknown-linux-gnu-gcc(GCC)7.4.0编译,64位
1.安装aws_lambda扩展
创建扩展如果不存在aws_lambda级联;注意:安装所需的扩展“aws_commons”创建扩展
1.创建角色,将Lambda策略添加到特定功能,并将角色附加到上述RDS示例策略{“版本”:“2012-10-17”,“声明”:[ {“Sid”:“VisualEditor0”,“Effect”:“允许”、“操作”:“lambda:函数”,“资源”:“arn:aws:lambda:region-name-here:rds-id-here:function:function-name-here”} ] }
1.执行查询SELECT * FROM aws_lambda.invoke('arn-of-penda-function','{“body”:“foo”}'::json);
对我很有效。希望能帮上忙!