【问题标题】:How to create invoke same lambda function for the two api-gateway如何为两个 api-gateway 创建调用相同的 lambda 函数
【发布时间】:2020-07-08 17:02:42
【问题描述】:

我创建了一个 2 api-gateway

  • 第一个

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

基本上需要创建single lambda函数

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

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

【问题讨论】:

    标签: python amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

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

    ...?搜索=全部
    ...?search=matchphrase=name_computer

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

    在我们继续之前,我建议您考虑以下架构:

    ...?search=all --> ?search_type=match_all
    ...?search=matchphrase=name_computer -> ...?search_type=match_some&match_phrase=name_computer

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2021-02-08
      • 1970-01-01
      • 2017-05-27
      • 2020-12-14
      • 2020-08-21
      相关资源
      最近更新 更多