Aws lambda 如何在AWS API网关集成模板中有条件地设置字段?

Aws lambda 如何在AWS API网关集成模板中有条件地设置字段?,aws-lambda,aws-api-gateway,Aws Lambda,Aws Api Gateway,我有一个通向Lambda集成的API网关。在集成模板中,我想检查一个输入参数,根据它的值,我想在传递给Lambda的事件中设置字段。为此,我编写了集成模板,但在其他情况下,即使我在POST请求中将“ext prod live”作为环境传递,它似乎也会继续。 所以我的事件['stage_variables']['solr_url']总是$stageVariables.solr_url。我认为我没有正确地访问帖子正文并从$input.params('environment')返回“” 模板 #set

我有一个通向Lambda集成的API网关。在集成模板中,我想检查一个输入参数,根据它的值,我想在传递给Lambda的事件中设置字段。为此,我编写了集成模板,但在其他情况下,即使我在POST请求中将“ext prod live”作为环境传递,它似乎也会继续。 所以我的事件['stage_variables']['solr_url']总是$stageVariables.solr_url。我认为我没有正确地访问帖子正文并从$input.params('environment')返回“”

模板

#set($inputJson = $input.json('$')) { "request" : $inputJson, "Authorization" : "$input.params().header.get('Authorization')",
#if ( $input.params('environment') == "ext-prod-live" ) "stage_variables" : {"solr_url" : "$stageVariables.live_solr_url"}
#else "stage_variables" : {"solr_url" : "$stageVariables.solr_url"}
#end }
请求正文

{"environment": "ext-prod-sim", "min_ts": 0,
                "execType": 14}

非常感谢您的帮助。

经过一些研究,我发现我必须使用velocity模板语言和路径才能正确访问POST负载。基本上将“$input.params('environment')”更改为“$input.path('$.environment')”

经过一些测试,我发现我得到的是环境的空字符串,尽管它在我的json输入中。是的,这就是答案。