I'm pretty new to Step Machines, I've created a relatively complex machine - which works quite well and is hooked up to API gateway. There's one piece of it which just feels a bit ugly to me, I've created this example but let me be clear that this is a "fake" example so explaining better ways of doing it via the API or whatever doesn't help much, I just want to achieve what I'm showing below but ideally in a neater way. I should also add what I've done works, but just isn't pretty.
Basically I set a variable using the pass functions with two different outputs based on a choice, what it feels like I should be able to do is something LIKE;
"S.$": "States.If($.resolution>1000,'Desktop','Mobile')"
{
"Comment": "A description of my state machine",
"StartAt": "Choice",
"States": {
"Choice": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.resolution",
"NumericGreaterThan": 1000,
"Next": "Status is OK"
}
],
"Default": "Status is Fail"
},
"Status is OK": {
"Type": "Pass",
"Next": "DynamoDB PutItem",
"Result": {
"type": "Desktop"
},
"ResultPath": "$.display"
},
"Status is Fail": {
"Type": "Pass",
"Next": "DynamoDB PutItem",
"Result": {
"type": "Mobile"
},
"ResultPath": "$.display"
},
"DynamoDB PutItem": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"TableName": "MyDynamoDBTable",
"Item": {
"Name": {
"S.$": "$.name"
},
"DisplayType": {
"S.$": "$.display.type"
}
}
},
"End": true
}
}
}
"Choice" is the function to use.