Aws lambda AWS API网关映射模板返回空响应或缺少引号

Aws lambda AWS API网关映射模板返回空响应或缺少引号,aws-lambda,aws-api-gateway,Aws Lambda,Aws Api Gateway,我部署了api网关项目,该项目集成了返回base64编码响应的lambda(非代理)函数。示例响应如下所示(请记住,为了简单起见,我删除了一些amazon标题并更改了响应): 解码前后的响应如下所示: 导入base64 >>>导入json >>>从pprint导入pprint >>> >>>s="Ifjib2Ifjiw3SidxVpzc6Ifjiw3IfgEyxVpzc6Ifjiw3IfgEyxVpzc6Ifjiw3Ifg4Ifg4Ifg4Ifjiw3Ifg4Ifg4Ifjiw3Id4Ifjiw

我部署了api网关项目,该项目集成了返回base64编码响应的lambda(代理)函数。示例响应如下所示(请记住,为了简单起见,我删除了一些amazon标题并更改了响应):

解码前后的响应如下所示:

导入base64 >>>导入json >>>从pprint导入pprint >>> >>>s="Ifjib2Ifjiw3SidxVpzc6Ifjiw3IfgEyxVpzc6Ifjiw3IfgEyxVpzc6Ifjiw3Ifg4Ifg4Ifg4Ifjiw3Ifg4Ifg4Ifjiw3Id4Ifjiw4My5Ny05ZwVm5Ng6Njzc6Njzc6If3If3If3Ic6Ifjiw3If3Ifjiw3If3Ifjiw3If3If3Ifjiw3If3Ifg6If3Ifg6Ifg6Ifg6If3Ifg6Ifg6Ifg6Ifg6Ifg2Ifg4Ifg4Ifg4If3Ifg4Ifg4IfWXSB3CIOIIIr0VulcVirulfelCBPUFRJT05Tiiwgilgtugfnaw5HDGLVbi1Paw1PcHrPb25ZijogilntuvpuklHrCaiWc1QyWdPbMf0UuLnWc1QyWdPbMf0UuLmZnLbNdIc2RbNrWc2RbNc2RbNc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2Pc2LbMbMbWbMbWg9UlWc2Gg2Lg9UlWc2Lc2Lc2LbWc2LbWc2Gg2Lg9Ug9UnWc2Lc2Lg9UnWc2LdWc2LBlijogimFWCGXPY2F0AW9UL2PZB24IFSWGIMNVZGUIAYMDB9“ >>>结果=base64.b64解码 >>>pprint(json.loads(结果)) {u'body':[{u'created':u'2020-11-27T17:30:43.401378Z', u'uuid':u'53a3e983-fb0d-4931-a794-aa284a3d3ab3'}, {u'created':u'2020-11-27T17:30:43.401263Z', u'uuid':u'd291b6a4-d847-4f96-9eef-8e0328c666a2'}, 代码:200, u'headers':{u'Allow':u'GET,HEAD,OPTIONS', u'Connection':u'keep-alive', u'Content-Encoding':u'gzip', u'Content-Length':u'203', u'Content-Type':u'application/json', u'Date':u'Mon,2020年12月14日15:20:39 GMT', u'Vary':u'Accept-Encoding,Cookie', u'X-Frame-Options':u'SAMEORIGIN', u'X-Pagination-Count':u'2', u'X分页限制“:u'100', u'X分页偏移量:u'0'} 对于上述响应,api网关响应映射模板为
$input.body
。我只想返回
body
值。当我将映射模板更改为
$util.base64Decode($input.body)
时,
GET
请求的响应主体为

{
  "code": 200,
  "headers": {
    "Allow": "GET, HEAD, OPTIONS",
    "Content-Encoding": "gzip",
    "Content-Type": "application/json",
    "Date": "Mon, 14 Dec 2020 15:38:09 GMT",
    "Server": "nginx/1.19.0",
    "Vary": "Accept-Encoding, Cookie",
    "X-Frame-Options": "SAMEORIGIN",
    "X-Pagination-Count": "2",
    "X-Pagination-Limit": "100",
    "X-Pagination-Offset": "0",
    "Content-Length": "203",
    "Connection": "keep-alive"
  },
  "body": [
    {
      "uuid": "53a3e983-fb0d-4931-a794-aa284a3d3ab3",
      "created": "2020-11-27T17:30:43.401378Z"
    },
    {
      "uuid": "d291b6a4-d847-4f96-9eef-8e0328c666a2",
      "created": "2020-11-27T17:30:43.401263Z"
    }
  ]
}
我感兴趣的是从
body
键返回值(在本例中为数组)。 映射模板,如
$util.base64Decode($input.body).path('$.body')
使其返回

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 277
Connection: close
Date: Mon, 14 Dec 2020 15:42:17 GMT
X-Pagination-Offset: 0
X-Pagination-Count: 2
X-Pagination-Limit: 100


[{uuid=53a3e983-fb0d-4931-a794-aa284a3d3ab3, created=2020-11-27T17:30:43.401378Z}, {uuid=d291b6a4-d847-4f96-9eef-8e0328c666a2, created=2020-11-27T17:30:43.401263Z}]
它缺少双引号,并且没有被视为有效的json。有一个类似的问题,但它似乎不能解决我的问题

类模板映射

  • $util.base64Decode($input.body).json('body')
  • $util.parseJson($util.base64Decode($input.body).path('$.body'))
  • $util.toJson($util.base64Decode($input.body).path('$.body'))
返回字面上的空响应

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 0
Connection: close
Date: Mon, 14 Dec 2020 15:44:28 GMT
x-amzn-RequestId: df62422c-fb35-4616-9f6b-0d646c2aa1e2
X-Pagination-Offset: 0
X-Pagination-Count: 2
X-Pagination-Limit: 100


响应映射模板应该如何返回格式正确的响应

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 0
Connection: close
Date: Mon, 14 Dec 2020 15:44:28 GMT
x-amzn-RequestId: df62422c-fb35-4616-9f6b-0d646c2aa1e2
X-Pagination-Offset: 0
X-Pagination-Count: 2
X-Pagination-Limit: 100