【问题标题】:AWS Stepfunction pass data to next lambda without all the extra paddingAWS Stepfunction 将数据传递给下一个 lambda,而无需所有额外的填充
【发布时间】:2020-12-06 23:16:18
【问题描述】:

我用 AWD CDK(打字稿)创建了一个状态机,一切正常。它只是 Lambda 1 的输出,它是 Lambda 2 的输入,具有某种我不感兴趣的状态机填充。

状态机定义:

{
  "StartAt": "",
  "States": {
    "...applicationPdf": {
      "Next": "...setApplicationProcessed",
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "FunctionName": "...applicationPdf",
        "Payload.$": "$"
      }
    },
    "...setApplicationProcessed": {
      "Next": "Done",
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Parameters": {
        "...applicationPdf",
        "Payload.$": "$"
      }
    },
    "Done": {
      "Type": "Succeed"
    }
  }
}

Lambda1 的输出(applicationPdf):

{
  "ExecutedVersion": "$LATEST",
  "Payload": {
    ...
  },
  "SdkHttpMetadata": {
    "AllHttpHeaders": {
      ...
    },
    "HttpHeaders": {
       ....
    },
    "HttpStatusCode": 200
  },
  "SdkResponseMetadata": {
     ....
  },
  "StatusCode": 200
}

所以我只对Payload 感兴趣,而不是所有其他东西。 我想做的原因是我想单独运行第二个 lambda 我只想让事件进入 Lambda,成为 Payload 对象,而不是 ExecutedVersion etc 的对象。

有人知道怎么做吗? 我看一下定义的Parameters选项,也许答案就在那里。

【问题讨论】:

    标签: aws-lambda aws-step-functions


    【解决方案1】:

    感谢您提出问题并感谢您对 Step Functions 的关注。

    ResultSelectorOutputPath 字段可用于操作状态的输出,当状态输出不需要在后续状态中访问的值时,这特别有用。它们的区别在于 ResultSelector 在应用状态的 ResultPath 之前应用,而 OutputPath 应用在它之后。

    如您所述,您可以使用 OutputPath 过滤掉任何不需要的元数据,然后再传递到下一个状态。

    【讨论】:

    • 感谢您的反馈!
    【解决方案2】:

    我找到了一个解决方案,添加outputPath

    return new LambdaInvoke(this, 'lamba', {
          lambdaFunction: Function.fromFunctionArn(this, name, this.createLabmdaArn('applicationPdf')),
          outputPath: '$.Payload',
        });
    

    这似乎可行,并且可能是解决方案。

    【讨论】:

      猜你喜欢
      • 2021-08-09
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2017-12-30
      相关资源
      最近更新 更多