【问题标题】:How do I conditionally set field in AWS API Gateway integration template?如何在 AWS API Gateway 集成模板中有条件地设置字段?
【发布时间】:2016-12-01 15:05:28
【问题描述】:

我有一个与 Lambda 集成的 API 网关。在集成模板中,我想检查一个输入参数,并根据它的值,在传递给 Lambda 的事件中设置字段。为此,我编写了集成模板,但即使我在 POST 请求中将“ext-prod-live”作为环境传递,它似乎总是在其他情况下出现。 所以我的事件['stage_variables']['solr_url'] 总是 $stageVariables.solr_url。我认为我没有正确访问 POST 正文并从 $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}

非常感谢任何帮助。

【问题讨论】:

  • 经过更多测试,我发现我得到了环境的空字符串,尽管它在我的 json 输入中。

标签: aws-lambda aws-api-gateway


【解决方案1】:

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

【讨论】:

  • 是的,这就是答案。
猜你喜欢
  • 2021-08-24
  • 2018-06-28
  • 2018-01-20
  • 2016-01-21
  • 1970-01-01
  • 2020-06-14
  • 2019-11-14
  • 2021-03-26
  • 2020-09-28
相关资源
最近更新 更多