AWS Step Function:检查是否为空

Iva*_*kin 2 amazon-web-services aws-lambda aws-step-functions

Step Function 定义如下:

{
  "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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上它是两个任务之间的选择。输入数据是这样的:

{
    "body": {
        "prop1": "value1",
        "myData": {
            "otherProp": "value"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是有时 JSON 中没有 myData。所以输入可能是这样的:

{
    "body": {
        "prop1": "value1",
        "myData": null
    }
}
Run Code Online (Sandbox Code Playgroud)

如何检查 myData 是否为空?

ada*_*ong 17

截至 2020 年 8 月,Amazon States Language 现在有一个isNullisPresent选择规则。使用这些,您可以null在选择状态内的状态输入中本地检查或存在键。

例子:

{ "Variable": "$.possiblyNullValue", "IsNull": true }
Run Code Online (Sandbox Code Playgroud)

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

  • 这是最有用的答案,接受的答案已经过时了。 (2认同)