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

step-functions-local本地调试:状态机触发同项目本地状态机失败

问题描述

已配置step-functions-local和serverless-offline,用于测试状态机#1(Foo)触发同项目内状态机#2(Bar)的本地流程。

执行本地启动命令:

sls offline start --stage dev

日志显示两个状态机均创建成功:

[Serverless Step Functions Local] 2022-07-29 11:03:59.867: [200] CreateStateMachine <=
{"sdkResponseMetadata":null,"sdkHttpMetadata":null,"stateMachineArn":"arn:aws:states:us-east-1:123:stateMachine:Foo",
"creationDate":1659117839863}

[Serverless Step Functions Local] 2022-07-29 11:03:59.883: [200] CreateStateMachine <=
{"sdkResponseMetadata":null,"sdkHttpMetadata":null,"stateMachineArn":
"arn:aws:states:us-east-1:123:stateMachine:Bar","creationDate":1659117839882}

使用以下命令测试状态机#1:

aws stepfunctions --endpoint http://localhost:8083 start-execution --state-machine \
arn:aws:states:us-east-1:123:stateMachine:Foo --name local-test-$RANDOM --input <JSON string payload>

#1能正常执行S3读写等步骤,但触发#2时失败,抛出异常:

"Error":"StepFunctions- StateMachineDoesNotExistException",
"Cause":"State Machine Does Not Exist: 'arn:aws:states:us-east-1:123:stateMachine:Bar' 
(Service: AWSStepFunctions; Status Code: 400; Error Code: StateMachineDoesNotExist"

#1中触发#2的步骤配置如下:

BarStateMachine:
  Type: Task
  Resource: "arn:aws:states:::states:startExecution.sync:2"
  Parameters:
    StateMachineArn: "arn:aws:states:us-east-1:123:stateMachine:Bar"

将StateMachineArn指向远程部署版本时#1可正常运行,但无法实现本地测试需求。

解决方案

问题核心是:默认情况下,状态机#1调用startExecution.sync时会请求AWS远程API,而非本地的step-functions-local服务,因此找不到本地创建的#2状态机。需通过以下两步配置解决:

  1. 在serverless.yml中配置Step Functions Local的本地端点
    在custom字段下添加stepFunctionsLocal配置,指定本地服务地址:
custom:
  stepFunctionsLocal:
    localEndpoint: http://localhost:8083
  1. 在状态机#1的触发步骤中显式指定本地端点
    修改#1中调用#2的Task配置,添加Endpoint参数指向本地step-functions-local服务:
BarStateMachine:
  Type: Task
  Resource: "arn:aws:states:::states:startExecution.sync:2"
  Parameters:
    StateMachineArn: "arn:aws:states:us-east-1:123:stateMachine:Bar"
    Endpoint: "http://localhost:8083"

完成配置后重启serverless-offline服务,再次测试状态机#1即可成功触发本地的#2状态机。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:54:14