如何从API网关映射模板中排除某些标头

时间:2019-01-11 22:56:02

标签: amazon-web-services aws-lambda aws-api-gateway

我在AWS API Gateway中创建了一个API。我在var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("customer") .DefaultTypeName("_doc"); // <--- type name used for all POCOs 中为appliction/json内容类型定义了以下映射模板。

Integration Request

此模板映射将所有标头(包括#set($allParams = $input.params()) { "body-json" : $input.json('$'), "params" : { #foreach($type in $allParams.keySet()) #set($params = $allParams.get($type)) "$type" : { #foreach($paramName in $params.keySet()) "$paramName" : "$util.escapeJavaScript($params.get($paramName))" #if($foreach.hasNext),#end #end } #if($foreach.hasNext),#end #end }, "stage-variables" : { #foreach($key in $stageVariables.keySet()) "$key" : "$util.escapeJavaScript($stageVariables.get($key))" #if($foreach.hasNext),#end #end } } )以明文形式转发到后端端点。

如何从标题中排除x-api-key

1 个答案:

答案 0 :(得分:0)

不确定是否要排除,但我做了这样的事情:

"headers": {
    #foreach($param in $input.params().header.keySet())
         #if($param.toLowerCase() == "x-api-key")
            "$param": "API Key authentication"
         #else
            "$param": "$util.escapeJavaScript($input.params().header.get($param))" 
         #end
         #if($foreach.hasNext),#end
    #end  
}

这样,您最终不会将x-api-key标头值暴露给lambda函数,但可以肯定地知道使用的身份验证方法是API Key。