AWS Лямбда-прокси - клиент не получает заголовки - PullRequest
1 голос
/ 25 мая 2020

У меня есть лямбда-функция python и интеграция с лямбда-прокси шлюза API.

Код 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 UT C 2020: Заголовки ответа метода: {Content-Type = application / json, Access-Control-Allow-Origin = *, Access- Control-Allow-Credentials = true, password = 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 голосов
/ 26 мая 2020

Оказывается, в запросе прокси не было необходимости, и мне нужен был шаблон сопоставления:

#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"], чтобы найти кваргов. Надеюсь, это поможет кому-то еще с подобной проблемой.

...