我有一个别名 Step Function(很高兴最近添加了该支持),其中 Step Function 逻辑需要知道别名,例如 Prod 或 Dev。我可以通过别名调用步骤函数,但上下文对象显示没有别名的 arn。 具体来说,我调用
"arn:aws:states:us-west-2:************:stateMachine:UpdateLocation:Development"
的 arn 并且上下文对象包含;
{
"Execution": {
"Id": "arn:aws:states:us-west-2:**********:express:UpdateLocation:57154f70-22c4-440a-9b3a-cf8445bea4ff:33e2e32e-db05-48f1-abe5-ff2d7b6a5d44",
"Input": {
"here": "there"
},
"Name": "57154f70-22c4-440a-9b3a-cf8445bea4ff",
"RoleArn": "arn:aws:iam::**********:role/stepfunction-function-role",
"StartTime": "2023-08-10T18:19:36.028Z"
},
"StateMachine": {
"Id": "arn:aws:states:us-west-2:**********:stateMachine:UpdateLocation",
"Name": "UpdateLocation"
},
"State": {
"Name": "Pass (1)",
"EnteredTime": "2023-08-10T18:19:36.033Z"
}
}
最终我从 API Gateway 调用 Step Function(通过 POST),并使用以下 VTL 来调用 Step Function。
"input": "$util.escapeJavaScript($input.json('$'))",
"stateMachineArn": "arn:aws:states:us-west-2:**********:stateMachine:UpdateLocation:Development"
}
我想我可以将 API 网关阶段添加到输入负载中,但我无法做到这一点。我正在尝试以下
#set ($newInput=$input.json('$'))
#set($newInput.Environment='Development')
"input": "$util.escapeJavaScript($newInput)",
"stateMachineArn": "arn:aws:states:us-west-2:*:stateMachine:UpdateLocation:Development"
}
但是我这里有一些问题,因为当我通过 API Gateway 测试它时,它似乎忽略了我更新输入选项的尝试。它记录;
Thu Aug 10 18:28:47 UTC 2023 : Endpoint request body after transformations: {
"input": "{\"here\":\"there\"}",
"stateMachineArn": "arn:aws:states:us-west-2:**********:stateMachine:UpdateLocation:Development"
}
有人对如何获取别名或如何向输入对象添加新的键/值有任何建议吗?
谢谢!
状态机版本和别名当前在上下文对象中不可用。所以,我能想到的你唯一的选择是: