我如何让aws lambda知道来自api网关的路径

时间:2019-09-15 00:20:46

标签: aws-lambda aws-api-gateway

我的lambda主要在运行,并且可以响应查询变量,例如?zip_code=90210
使用查询字符串变量检查,它对于一个邮政编码来说可以正常工作
 event["queryStringParameters"] && event["queryStringParameters"]['zip_code']
一个邮政编码作为查询参数。

我在让它响应路径时遇到问题,例如/zips

在尝试检查路径/zips是否从实际的API网关传递时,我陷入了困境。

我已经创建了该路径。我可以使用带有pathStringParameters['zips']

的测试事件来为其创建成功的本地lambda事件测试

但是当我从APIgateway调用lambda时,无法识别数据结构。

代码:

  zip_code = ''
  p event["pathStringParameters"]  # This gives {zips => true}
  p "---"
  if event["pathStringParameters"]
    if event["pathStringParameters"]['zips'] == 'true' # Works in testing but not from API
      zip_code = "10000,20000,30000"
    end
  end
  if zip_code == ''
    if event["queryStringParameters"] && event["queryStringParameters"]['zip_code']
      zip_code = event["queryStringParameters"]['zip_code']
    else
      p "fail through default values"
      zip_code = "88888,77777,66666" # So the API /zips ends up returning these
    end
  end

如何获取lambda以“ 10000,20000,30000”响应来响应API网关(数字无关紧要,我的意思是段代码)。

测试一个zip的事件数据(可以通过api和api正常运行):

{
  "queryStringParameters": {
    "zip_code": "40505"
  }
}

所有zip的测试数据(在测试事件中有效,但在API中无效)

{
  "pathStringParameters": {
    "zips": "true"
  }
}

日志显示:

Sun Sep 15 00:16:32 UTC 2019 : HTTP Method: GET, Resource Path: /zips
Sun Sep 15 00:16:32 UTC 2019 : Method request path: {}
Sun Sep 15 00:16:32 UTC 2019 : Method request query string: {}
Sun Sep 15 00:16:32 UTC 2019 : Method request headers: {}

注意:Lambda代理集成已启用

不确定我是否混淆了路径/资源/ URL。毕竟,我不需要像/zip/02130/这样的资源,我只想要端点/zips的所有zip

0 个答案:

没有答案