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

如何在Glue Python作业中读取并解析Step Function的输入状态?

如何从Step Function传递的参数中访问Glue作业里的input数组内容?

我来帮你解决这个问题——本质上是因为Step Function传递的参数是JSON字符串,而非直接可用的Python对象,所以需要额外做一步解析操作。

先梳理下你的场景:
你的Step Function生成的输入结构是这样的:

{
  "name": "Done",
  "input": [
    {
      "success": "123"
    },
    {
      "failing": "123"
    }
  ],
  "inputDetails": {
    "truncated": false
  }
}

对应的Step Function任务配置里,你用$$.input把整个输入传递给了Glue作业的--job-output-states参数,但在Glue代码里直接打印args只能拿到原始的字符串,没法直接访问input数组。

问题根源

当你在Step Function的Parameters里用$$.input传递数据时,Step Function会把整个JSON结构序列化为字符串传给Glue作业,所以你拿到的args["job-output-states"]是一个JSON格式的字符串,而不是Python的字典或列表,自然没法直接通过键名访问内部的input数组。

解决方法

只需要在Glue代码里把这个JSON字符串反序列化为Python对象即可,具体修改如下:

import sys
import json  # 新增导入json模块
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, [
    "job-output-states"
])

# 把JSON字符串解析成Python字典
step_function_data = json.loads(args["job-output-states"])

# 现在就能直接访问input数组了
input_array = step_function_data["input"]
print("Input数组内容:", input_array)

# 如果要访问数组里的具体元素,比如第一个对象的success字段
success_id = input_array[0]["success"]
print("Success对应的ID:", success_id)

# 第二个对象的failing字段
failing_id = input_array[1]["failing"]
print("Failing对应的ID:", failing_id)

小提示

如果你不确定传递过来的参数是什么样子,可以先打印原始的字符串看看:

print("原始参数内容:", args["job-output-states"])

这样能确认它确实是JSON字符串,方便你后续调整解析逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:15:58