【问题标题】:Is it possible to add new key/value to InputPath?是否可以向 InputPath 添加新的键/值?
【发布时间】:2019-06-19 13:09:14
【问题描述】:

我需要在不改变初始 InputPath 结构的情况下,使用新属性扩展 Step Functions 状态的 InputPath。

例如,我的 InputPath 如下所示:

{
    "key1": "value1",
    "key2": "value2"
}

我需要在此处添加一对新的键/值并将其传递给 Lambda。因此,我想要的是:

{
   "key1": "value1",
   "key2": "value2",
   "key3": "value3"
}

但我还没有找到实现这一点的方法。我能够做的是使用参数更改 InputPath 的结构:

"InputPath": "$",
"Parameters": {
    "input.$": "$",
    "newValue": "value3"
}

所以我得到了具有以下结构的 JSON:

{
    "input": {
        "key1": "value1",
        "key2": "value2"
    },
    "key3": "value3"
}

这不是什么大问题,但我想知道是否有办法保持 InputPath 的扁平结构而不添加新属性(例如我的示例中的“输入”)。

UPD:我知道它可以使用 Pass 状态来实现,但是状态机会变得太大。

【问题讨论】:

    标签: amazon-web-services aws-step-functions


    【解决方案1】:

    是的,可以展平结构。尝试关注

    "InputPath": "$",
    "Parameters": {
        "key1.$": "$.key1",
        "key2.$": "$.key2",
        "key3": "value3"
    }
    

    详情请咨询InputPaths and Parameters

    编辑

    由于您想将新值传递给您的 Lambda 函数,我假设您的状态是 Task 类型。 Task state 提供对参数的支持。因此,您不需要 Pass 状态来实现同样的效果。

    【讨论】:

    • 如果我们不确切知道输入参数,我们只需要这个 json 的新 key 以便发送到下一个 lambda,我们该怎么办?
    • @ChinsKuriakose 您可以将先前的输入存储在属性 {"previous_input.$": "$", "key3": "value3"}
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多