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

如何在AWS Step Functions中通过JSONPath动态获取对象路径?

在AWS Step Functions中动态读取嵌套配置的更优方法

我有存储在Step Functions的$.config变量中的配置对象:

{
  "DE": {
    "hello": "hallo"
  },
  "EN": {
    "hello": "hello"
  },
  "ES": {
    "hello": "hola"
  }
}

同时存在变量$.language,当前值为DE。我尝试用以下方式动态选择对应键值,但写法无法生效:

Next Step:
  Type: Pass
  Parameters:
    localizedHello.$: $.config[$.language].hello
                              # 这里的写法不生效
  ...

我已知一种可行但繁琐的方法:

It is German:
  Type: Pass
  Parameters:
    localizedConfig.$: $.config.DE
  ResultPath: $.selected
  Next: Next Step
Next Step:
  Type: Pass
  Parameters:
    localizedHello.$: $.selected.localizedConfig.hello
  ...

且我以为AWS Step Functions不支持类似States.Get(States.Get($.config, $.language), 'hello')的嵌套内置函数调用,请问是否有比使用额外Pass步骤更优的方法?


方法1:使用嵌套的States.Get内置函数

当前AWS Step Functions的内置函数支持嵌套调用States.Get,可直接在单个Pass步骤中完成取值,无需额外中间步骤:

Next Step:
  Type: Pass
  Parameters:
    localizedHello.$: States.Get(States.Get($.config, $.language), 'hello')
  ...

方法2:使用States.Format构造JSONPath路径

如果你的Step Functions环境暂不支持嵌套States.Get,可以用States.Format拼接完整JSONPath,再通过States.JsonPath取值:

Next Step:
  Type: Pass
  Parameters:
    localizedHello.$: States.JsonPath(States.Format('$.config.{}.hello', $.language))
  ...

方法3:使用新版ASL的动态键语法

在新版Amazon States Language(ASL)中,已支持直接使用方括号的动态键引用,修正语法后即可直接生效:

Next Step:
  Type: Pass
  Parameters:
    localizedHello.$: "$.config[$.language].hello"
  ...

内容的提问来源于stack exchange,提问作者Alex Jäger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:23