如何为两个apigateway创建调用相同lambda函数

2024-09-30 10:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个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函数


Tags: 函数httpscomapisearchindexallus
1条回答
网友
1楼 · 发布于 2024-09-30 10:34:34

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

…?search=all
…?search=matchphrase=name\u计算机

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

<> P>在我们前进之前,我建议你考虑以下模式:

…?搜索=all>?搜索类型=匹配所有内容
…?search=matchphrase=name\u computer->search\u type=match\u some&;匹配\u短语=名称\u计算机

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

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

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

相关问题 更多 >

    热门问题