#10105·moto

StepFunctions 解析器: JSONata 表达式评估器从未被连接 (eval_jsonata_expression 调用的是一个 None 指针) -> 每个 JSONata 表达式都会引发 TypeError

作者: tinovyatkin创建于 2026年7月13日更新于 2026年7月27日
标签enhancement

import json, time, os, boto3, moto from moto import mock_aws os.environ.setdefault("AWS_DEFAULT_REGION", "us-east-1")

DEFN = { "QueryLanguage": "JSONata", "StartAt": "Add", "States": {"Add": {"Type": "Pass", "Output": {"sum": "{% 1 + 1 %}"}, "End": True}}, }

@mock_aws(config={"stepfunctions": {"execute_state_machine": True}}) def run(): sfn = boto3.client("stepfunctions", region_name="us-east-1") arn = sfn.create_state_machine( name="jsonata-repro", definition=json.dumps(DEFN), roleArn="arn:AWS:iam::123456789012:role/sf", ).get("stateMachineArn") ex = sfn.start_execution(stateMachineArn=arn)["executionArn"] for _ in range(25): d = sfn.describe_execution(executionArn=ex) if d["status"] != "RUNNING": break time.sleep(0.2) print("status:", d["status"]) print("cause:", d.get("cause"))

run() Output (moto 5.1.22): status: FAILED cause: TypeError('NoneType' object is not callable) Expected: the execution SUCCEEDS with output {"sum": 2}.