我有一个触发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 新手。
您需要指定
$.Payload.number_of_higher_grade_promotions
,因为您共享的响应具有嵌套的键,而不是在根目录中。或者,您可以将 OutputPath 设置为 $.Payload
,以使 Step Functions 仅传递来自 Lambda 函数的响应负载的一部分。