首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Redshift调用Lambda UDF时出错

问从Redshift调用Lambda UDF时出错
EN

Stack Overflow用户
提问于 2021-06-09 02:12:10
回答 1查看 125关注 0票数 0

当从我的Redshift存储过程中调用python lambda UDF时,我得到了以下错误。你知道会出什么问题吗?

代码语言:javascript
复制
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如下所示。

代码语言:javascript
复制
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函数,如下所示。

代码语言:javascript
复制
select send_email_lambda('sebder@company.com',
                   'recipient1@company.com',
                   'sample body',
                   'sample subject);

编辑:根据请求,添加从redshift传递到lambda的事件有效负载。

代码语言:javascript
复制
{
   "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
}
EN

回答 1

Stack Overflow用户

发布于 2021-06-10 10:22:16

看起来一个UDF可以传递多行数据。因此,它可能会收到发送多封电子邮件的请求。代码需要遍历每个顶级数组,然后从其中的数组中提取值。

看起来它需要返回一个与输入数组长度相同的数组。

对于您的代码,创建一个只有一个条目的数组,然后在其中返回字典。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67892490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档