Step Function传递输入参数至Glue Job失败的问题排查咨询
Step Function传递输入到Glue Job的解决方案
第一步:调整状态机中Glue调用节点的参数映射配置
在状态机定义的Glue Job启动任务中,需要显式将输入字段映射到Glue的Arguments参数,配置示例如下:"GlueStartJobTask": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "你的Glue任务实际名称", "Arguments": { "--comment.$": "$.Comment" } }, "End": true }其中键名后缀
.$表示该值从状态机输入的对应JSON路径读取,你传入的输入为{"Comment": "Insert your JSON here"},上述配置会自动把Comment字段的值注入到Glue的--comment运行参数中。第二步:修正Glue Job的参数读取逻辑
Glue PySpark任务需要通过官方提供的getResolvedOptions方法读取运行参数,代码示例如下:import sys from awsglue.utils import getResolvedOptions # 第二个参数为你要读取的参数名列表,不需要带前缀`--` args = getResolvedOptions(sys.argv, ['comment']) # 读取参数值 input_comment = args['comment'] # 测试打印,可在CloudWatch日志中查看结果 print(f"传入的Comment参数值为: {input_comment}")第三步:校验参数传递结果
重新运行状态机后,先查看状态机执行历史中Glue任务节点的Parameters字段,确认Arguments已经正确填充了对应的值;再到Glue任务的CloudWatch运行日志中查找打印的参数值,确认参数传递成功。注意事项
JSON路径大小写敏感,状态机中配置的字段路径需要和输入的JSON字段大小写完全匹配;不要在Glue参数名中使用特殊字符,避免解析失败。
内容的提问来源于stack exchange,提问作者Abdul Haseeb
相关产品推荐
相关产品推荐

