当从我的Redshift存储过程中调用python lambda UDF时,我得到了以下错误。你知道会出什么问题吗?
ERROR: Invalid External Function Response Detail:
-----------------------------------------------
error: Invalid External Function Response code:
8001 context: Extra rows in external function response query: 0
location: exfunc_data.cpp:330 process: padbmaster [pid=8842]
----------------------------------------------- 我的Python Lambda UDF如下所示。
def lambda_handler(event, context):
#...
result = DoJob()
#...
ret = dict()
ret['results'] = result
ret_json = json.dumps(ret)
return ret_json上面的lambda函数通过名称send_email_lambda与Redshift中的一个外部函数相关联。权限和调用工作正常,没有任何问题。我将调用lambda函数,如下所示。
select send_email_lambda('sebder@company.com',
'recipient1@company.com',
'sample body',
'sample subject);编辑:根据请求,添加从redshift传递到lambda的事件有效负载。
{
"user":"awsuser",
"cluster":"arn:aws:redshift:us-central-1:dummy:cluster:redshift-test-cluster",
"database":"sample",
"external_function":"lambda_send_email",
"query_id":178044,
"request_id":"20211b87-26c8-6d6a-a256-1a8568287feb",
"arguments":[
[
"sender@company.com",
"user1@company.com,user2@company.com",
"<html><h1>Hello Therer</h1><p>A sample email from redshift. Take care and stay safe</p></html>",
"Redshift email lambda UDF",
"None",
"None",
"text/html"
]
],
"num_records":1
}发布于 2021-06-10 10:22:16
看起来一个UDF可以传递多行数据。因此,它可能会收到发送多封电子邮件的请求。代码需要遍历每个顶级数组,然后从其中的数组中提取值。
看起来它需要返回一个与输入数组长度相同的数组。
对于您的代码,创建一个只有一个条目的数组,然后在其中返回字典。
https://stackoverflow.com/questions/67892490
复制相似问题