我在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
?
答案 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。