如何为调用AWS Lambda UDF的Athena查询创建可供报表工具访问的视图
可行解决方案
Amazon Athena 支持在视图定义中直接嵌入外部函数声明,你可以使用以下SQL创建目标视图:
CREATE OR REPLACE VIEW MYVIEW AS USING EXTERNAL FUNCTION s3signedurl(col1 VARCHAR) RETURNS VARCHAR LAMBDA 'customudf' SELECT incident, pdfloc, s3signedurl(pdfloc) AS s3_signed_url FROM "lambdapoc"."lambdametadata"
注意事项
- 调用视图的IAM身份(包含Tableau对接使用的身份)需要同时配置
athena:CallLambdaFunction权限,以及对应customudfLambda函数的lambda:InvokeFunction权限,否则查询会抛出权限不足报错。 - 视图每次执行时都会实时触发Lambda函数计算
s3_signed_url字段值,Athena不会缓存UDF的计算结果,完全满足你每次查询获取动态生成的最新S3签名URL的需求。 - 视图创建完成后,Tableau等对接Athena的工具可以直接识别该视图,执行
SELECT * FROM MYVIEW即可获取全部字段,和查询普通表、普通视图的逻辑完全一致,无需额外适配。
验证方法
创建完成后可先在Athena查询编辑器中执行测试语句验证效果:
SELECT * FROM MYVIEW LIMIT 10
确认返回结果和直接执行原查询的结果一致,且s3_signed_url字段值每次执行都会更新即可。
内容的提问来源于stack exchange,提问作者akshay lad
相关产品推荐
相关产品推荐

