AWS Lambda代理-客户端未接收标头

时间:2020-05-25 20:49:21

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

我有一个python lambda函数和一个API Gateway Lambda Proxy集成。

python代码返回:

{
    "statusCode": str(code),
    "body": error if error else result.format(**event),
    "headers": {
        "Content-Type": "application/json",
        **kwargs,
    }
}

API网关中的响应如下:

Endpoint response body before transformations: 
{
    "statusCode": "200",
    "body": "Some text.",
    "headers": {
        "Content-Type": "application/json",
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Credentials": true,
        "kwarg": "foo"
    }
}

Mon May 25 20:18:44 UTC 2020:方法响应标头:{Content-Type = application / json,Access-Control-Allow-Origin = *,Access-Control-Allow-Credentials = true,密码= 1 ,X-Amzn-Trace-Id = Root = 1-5ecc2824-c55ec6e1dc79ba1417361345; Sampled = 0}

但是,对应用程序的响应在到达客户端时会丢失所有标头。客户端反而收到:

{
    "data":"Some text.",
    "status":200,
    "statusText":"",
    "headers":{
        "content-length":"10",
        "content-type":"application/json"
    },
    "config":{
        "method":"GET",
        "headers":{
            "Content-Type":"application/json",
            "Accept":"application/json"
        },
        "timeout":0,
        "transformRequest":[
            null
        ],
        "transformResponse":[
            null
        ],
        "url":"https://something.execute-api.region.amazonaws.com/test/page?foo=bar",
        "data":""
    }
}

我需要更改什么?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

事实证明,不需要代理请求,我需要映射模板:

#set($allParams = $input.params())
{
"custom-parameters" : $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
}
}

关于回应。然后,我不得不查看result["data"]["custom-parameters"]["headers"]来找到kwarg。 我希望这可以帮助其他有类似问题的人。