You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lambda触发Glue作业后判断其是否执行成功

让Lambda等待Glue作业完成并处理执行结果

要实现Lambda等待Glue作业完成后再返回结果,核心逻辑是启动作业后持续轮询作业状态,直到作业进入终态(成功/失败/停止),再根据终态结果返回对应响应给Step Functions。

修改后的Lambda代码

import json
import boto3
import time

def lambda_handler(event, context):
    glue_client = boto3.client('glue')
    
    # 启动Glue作业
    try:
        start_response = glue_client.start_job_run(
            JobName='job1',
            Arguments={'--parametro1': 'par 1'}
        )
        job_run_id = start_response['JobRunId']
    except Exception as e:
        return {
            'statusCode': 500,
            'body': json.dumps(f"启动Glue作业失败: {str(e)}")
        }
    
    # 轮询作业状态,直到进入终态
    while True:
        try:
            run_response = glue_client.get_job_run(
                JobName='job1',
                RunId=job_run_id
            )
            job_status = run_response['JobRun']['JobRunState']
            
            # 检查是否为终态
            if job_status in ['SUCCEEDED', 'FAILED', 'STOPPED']:
                break
            
            # 非终态则等待一段时间后再次查询
            time.sleep(30)
        except Exception as e:
            return {
                'statusCode': 500,
                'body': json.dumps(f"查询Glue作业状态失败: {str(e)}")
            }
    
    # 根据作业终态返回对应结果
    if job_status == 'SUCCEEDED':
        return {
            'statusCode': 200,
            'body': json.dumps(f"Glue作业执行成功,RunId: {job_run_id}")
        }
    else:
        error_message = run_response['JobRun'].get('ErrorMessage', '无错误信息')
        return {
            'statusCode': 500,
            'body': json.dumps(f"Glue作业执行失败,状态: {job_status},错误信息: {error_message},RunId: {job_run_id}")
        }

关键注意事项

  • Lambda超时设置:必须确保Lambda的超时时间大于Glue作业的最长预期运行时间,否则Lambda会提前终止,无法获取最终结果。比如Glue作业最长跑30分钟,Lambda超时可设为35分钟。
  • 轮询间隔:示例中用30秒间隔,可根据实际需求调整,避免过于频繁调用API触发限流。
  • 异常处理:代码捕获了启动作业和查询状态时的异常,确保任何环节出错都能返回明确的错误信息给Step Functions。
  • Step Functions集成:Step Functions可根据Lambda返回的statusCode做分支处理,比如200时执行下一步,500时触发重试或错误告警流程。

内容的提问来源于stack exchange,提问作者Javier Sevillano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:30:00