需要从 Step Function - lambda 读取响应值

问题描述 投票:0回答:1

我有一个触发Python lambda 函数的stepfunction。 lambda 函数返回一个字典,其中包含 key:value 格式的数据。

我想在后续 StepFunction 的选择函数中使用从 Lambda 返回的键:值之一。 我在解析 key:value 属性时遇到问题。 我已经尝试了 ResultPAth、OutputPath 并解析结果值。

来自 lambda 的字典:

load_result={}
load_result['DEPT_NAME'] = dataset["dept"]
load_result['number_of_higher_grade_promotions'] = 0

为 Lambda 函数配置的步骤函数定义:

{
  "Type": "Task",
  "Resource": "arn:aws:states:::lambda:invoke",
  "Parameters": {
    "Payload.$": "$",
    "FunctionName": "arn:aws:lambda:eu-central-1:1234456789:function:my_lambda_function:$LATEST"
  },
  "Retry": [
    {
      "ErrorEquals": [
        "Lambda.ServiceException",
        "Lambda.AWSLambdaException",
        "Lambda.SdkClientException",
        "Lambda.TooManyRequestsException"
      ],
      "IntervalSeconds": 1,
      "MaxAttempts": 3,
      "BackoffRate": 2
    }
  ],
  "OutputPath": "$",
  "Next": "Is queue empty"
}

从step函数执行lambda函数时的结果:

{
  "ExecutedVersion": "$LATEST",
  "Payload": {
    "dept": [
      "DEPT_FIN"
    ],
    "number_of_higher_grade_promotions": 0
  }
}

我尝试在选择步骤(队列是否为空)函数中访问字典键 number_of_higher_grade_promotion,但出现错误:

{
  "Type": "Choice",
  "Choices": [
    {
      "Variable": "$.number_of_higher_grade_promotion",
      "NumericEquals": 0,
      "Next": "Empty queue"
    }
  ],
  "Default": "lambda_function_2"
}

我得到的错误是:

An error occurred while executing the state 'Is queue empty' (entered at the event id #7). Invalid path '$.number_of_higher_grade_promotion': The choice state's condition path references an invalid value.

请帮忙,我是 Step Functions 新手。

python-3.x aws-step-functions
1个回答
0
投票

您需要指定

$.Payload.number_of_higher_grade_promotions
,因为您共享的响应具有嵌套的键,而不是在根目录中。或者,您可以将 OutputPath 设置为
$.Payload
,以使 Step Functions 仅传递来自 Lambda 函数的响应负载的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.