Search code examples
amazon-web-servicesaws-lambdaaws-step-functions

AWS Step Function: check for null


Step Function is defined like that:

{
  "StartAt": "Decision_Maker",
  "States": {
    "Decision_Maker":{
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.body.MyData",
          "StringEquals": "null", //that doesn't work :(
          "Next": "Run_Task1"
        }],
        "Default": "Run_Task2"
    },
    "Run_Task1": {
      "Type": "Task",
      "Resource": "url_1",
      "Next": "Run_Task2"
    },
    "Run_Task2": {
      "Type": "Task",
      "Resource": "url_2",
      "End": true
    }
  }
}

Basically it's a choice between 2 tasks. Input data is like this:

{
    "body": {
        "prop1": "value1",
        "myData": {
            "otherProp": "value"
        }
    }
}

The problem is that sometimes there's no myData in JSON. So input may come like this:

{
    "body": {
        "prop1": "value1",
        "myData": null
    }
}

How do I check whether or not myData is null?


Solution

  • As of August 2020, Amazon States Language now has an isNull and isPresent Choice Rule. Using these you can natively check for null or the existence of a key in the state input inside a Choice state.

    Example:

    { "Variable": "$.possiblyNullValue", "IsNull": true }
    

    https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-choice-state.html#amazon-states-language-choice-state-rules