如何为两个api网关创建调用相同lambda函数



I aws创建一个2 api网关

  • 第一个

https://xx.xx-api.us-east-1.amazonaws.com/v1/uploadapi/?search=all

那么我的lambda函数将在下面调用

searchone = es.search(index="my-index", body={"query": {"match_all": {}}})
return searchone
  • 第二个

https://xx.xx-api.us-east-1.amazonaws.com/v1/uploadapi/?search=matchphrase=name_computer

searchtwo = es.search(index="my-index", body={"query": {"match": {"name":"computer"}}})
return searchtwo

基本上需要创建singlelambda函数

如果api url是第一个,则返回searchone如果api url为第二个,则返searchtwo

免责声明?我需要为以上两个api的创建单独的Lambda函数吗

不,您不需要多个lambda函数。在您指定的两个url中,更改的只是查询参数。

搜索=全部
搜索=匹配短语=名称_计算机

搜索参数用于这样的条件,即,如果服务器需要以某种特定方式处理请求,则通知服务器您可以在lambda函数中访问它们

在我们继续前进之前,我建议您考虑以下模式:

搜索=全部-->search_type=match_all
search=matchphrase=name_computer->search_type=match_some&match_phrase=名称计算机

现在,如果您研究传递给lambda函数的event对象,您将在event.requestContext.queryStringParameters中找到这些查询参数。它看起来像这样:

{
<...>
'resource': '/v1/uploadapi',
'requestContext': {
'queryStringParameters': {
'search_type': 'match_some',
'match_phrase': 'name_computer'
},
<...>
}

您现在可以使用它在其上构建逻辑

最新更新