是否可以使单个参数在步进函数中有条件地接收其值?

问题描述

我有一个参数'request_id',我希望从两种不同的JSON格式获取ID,并将其发送到步骤函数任务的输入。

第一种形式如下:

{ "request_id": "abcde-abcd-abcde-abc" }

第二种格式如下:

{ "request": { "id": "abcde-abcd-abcde-abc",}

当前,我有一个看起来像

的参数
"request_id.$": "$.request_id"

但是想要的东西等同于(此功能无效)

"request_id.$": "$.['request_id','request.id']"

在step函数中是否可行?或者我需要将这两个请求ID拆分为JSON中的两个路径,还是在函数中执行?

解决方法

一种解决方法可能是选择状态并检查是否存在第一个变量:

{
    "Variable": "$.request_id","IsPresent": true
}

然后根据结果进行两个不同的分配。

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

{
  "StartAt": "choice","States": {
    "choice": {
      "Type": "Choice","Choices": [
        {
          "Variable": "$.request_id","IsPresent": true,"Next": "assignment1"
        }
      ],"Default": "assignment2"
    },"assignment1": {
      "Type": "Pass","Result": "World","End": true
    },"assignment2": {
      "Type": "Pass","End": true
    }
  }
}