AWS Step Function调用Glue Job完成后仍卡在运行中状态如何解决
问题排查与解决方案
核心原因说明
90%以上的这类问题是Step Function对应的IAM执行角色缺少Glue作业状态查询权限导致的:你配置的arn:aws:states:::glue:startJobRun.sync服务集成模式,除了需要启动Glue Job的权限外,还需要持续轮询Glue Job的运行状态,才能感知作业完成的信号。如果缺少查询权限,状态机无法拿到作业结束的通知,就会一直卡在运行中状态直到超时。
具体排查修复步骤
- 首先检查状态机绑定的IAM角色权限,确保权限策略中包含以下操作权限,覆盖你用到的两个Glue Job资源:
{ "Effect": "Allow", "Action": [ "glue:StartJobRun", "glue:GetJobRun", "glue:GetJobRuns" ], "Resource": [ "arn:aws:glue:<你的AWS区域>:<你的AWS账号ID>:job/ConvertLandingToRaw", "arn:aws:glue:<你的AWS区域>:<你的AWS账号ID>:job/ConvertJsonToParquet" ] }
- 进入状态机的具体执行详情页,切换到事件历史标签,查找启动Glue Job之后的事件,若存在
AccessDenied类错误,补充对应权限即可解决问题。 - 若权限无异常,确认Glue Job的最终运行状态确实为
SUCCEEDED,排除作业实际处于挂起、重试状态但你误判为已完成的情况,同时确认Step Function和Glue Job部署在同一个AWS区域。 - 若以上排查都无问题,可以临时将状态机的Glue调用模式改为不需要等待回调的
arn:aws:states:::glue:startJobRun,验证状态机是否可以正常推进,再逐步定位同步模式的问题。
内容的提问来源于stack exchange,提问作者Abdul Haseeb
相关产品推荐
相关产品推荐

