I'm trying to use a step function startExecution state to break up a state machine into 2 parts and I want to pass the input of the startExecution function to the executed function, e.g.,
"Process chunk": {
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-west-1:12345:stateMachine:Ingestion-process-parts",
"Input": "$.input.MessageDetails"
},
"End": true,
"ResultPath": "$.input.MessageDetails"
}
where the startExecution input is
"input": {
"MessageNumber": 0,
"MessageDetails": "<an S3 URL>"
},
but no matter what I try for the input to the executed state machine it just passes a literal value, i.e., in the case above, instead of passing the input of the startExecution state to the executed function it passes
"input": {
"MessageDetails": "$.input.MessageDetails",
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID": "arn:aws:states:us-west-1:1234:execution:Ingestion-Chunk-CSV:055ede1a-dc03-4412-a341-d3b6611dbed4"
},
Note that the same input parsing Does work for the Result:
{
"name": "Process chunk",
"output": {
"MessageNumber": 0,
"MessageDetails": "<an S3 URL>",
It doesn't appear the the normal approach of parsing the input using $... works for this purpose. Is it possible to do what I want?
thanks
Thanks Uri, that worked great!
I did, however, find that using "StateMachineArn.$": "$$.StateMachine.Id" resulted in an attempted recursion, rather than calling the function I wanted, so I left that as before.
My bad of course. I thought you are passing your own ARN. Of course you need to pass the ARN that you want to invoke so you are correct. Will edit my answer.