Step Machine - is there any kind of intrinsic functions for if statements?

0

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')"

Enter image description here

{
  "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
    }
  }
}
已提問 2 年前檢視次數 1943 次
2 個答案
0

This is the list of intrinsic functions. As you can see, it does not include an if function.

Your only option is to use a Choice state.

I will raise it to the service team.

profile pictureAWS
專家
Uri
已回答 2 年前
0

Hello, currently there is no intrinsic function in Step Functions which can control the execution flow like Choice state. Choice state is the only viable option right now in this use case. Please refer to [1] for more information on Intrinsic Functions in Step Functions

[1] Intrinsic functions: https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html

profile pictureAWS
支援工程師
Bharat
已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南