我已经配置了阶跃函数.局部和无服务器离线来测试一个状态机(让我们称之为#1),它触发了在项目中定义的另一个状态机(#2)。
当我用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 .yml文件中定义启动状态机#1的步骤:
BarStateMachine:
Type: Task
Resource: "arn:aws:states:::states:startExecution.sync:2"
Parameters:
StateMachineArn:
arn:aws:states:us-east-1:123:stateMachine:Bar如果不是指向本地创建的#2的arn,而是指向已部署版本的arn,我就可以让#1工作。然而,这个已部署的版本当然是一个远程资源,这在某种程度上违背了本地测试的目的。对于如何正确执行本地版本的#2,有什么想法吗?
发布于 2022-09-22 22:35:39
尝试类似于export STEP_FUNCTIONS_ENDPOINT=http://localhost:8083 && serverless offline start的方法--这将导致step函数在本地使用,用于step函数服务集成。
https://stackoverflow.com/questions/73171018
复制相似问题