使用Boto3调用start_workflow_run()触发Glue工作流时,Lambda会全程运行直至工作流完成吗?
Lambda触发Glue工作流的执行行为说明
你提到的这个问题很常见,我来给你明确说明:
当你的Lambda函数调用start_workflow_run启动Glue工作流后,Lambda会立刻结束运行,不会在整个工作流执行期间持续运行。
原因解释:
start_workflow_run是一个异步API,它的作用只是向Glue服务发送启动工作流的请求,一旦Glue确认接收请求并返回包含RunId的响应,这个API调用就完成了。- Lambda函数的执行周期会在
lambda_handler函数执行完最后一行代码后结束——也就是你的代码里打印完响应内容之后,Lambda就会停止运行,不会再监控后续Glue工作流的执行状态。
结合你的代码来看:
你的代码逻辑就是创建Glue客户端、调用启动工作流的API、打印响应结果。整个Lambda的执行流程到print(json.dumps(response, indent=4))这一行就彻底结束了,之后Lambda会释放资源,不会等待Glue工作流跑完。
import json import boto3 # create glue client client=boto3.client('glue') def lambda_handler(event, context): print("lambda working") response = client.start_workflow_run(Name='workflowName') print(json.dumps(response, indent=4))
额外补充(如果需要监控工作流状态):
如果你的业务需要Lambda等待工作流完成或者处理工作流的执行结果,得额外实现逻辑:
- 可以在Lambda中加入轮询逻辑,定期调用
get_workflow_runAPI检查工作流的运行状态,直到工作流完成或失败(注意要考虑Lambda的超时限制,最长15分钟)。 - 或者通过Glue的CloudWatch事件通知,当工作流状态变化时触发另一个Lambda函数来处理后续逻辑。
内容的提问来源于stack exchange,提问作者riquieri01
相关产品推荐
相关产品推荐

