如何在无服务器Lambda中声明可选的get参数?

时间:2018-10-16 14:11:21

标签: http lambda serverless

我想了解是否有一种快速的语法来定义无服务器(在AWS lambda上部署)中的可选pathParameter。

这就是我的功能

功能:

 MyFunc:

    handler: handler.myFunc

    events:

      - http:

          path: /getdata/{my_id}

          method: get

          request:

            parameters:

              paths:

                my_id: true

我在互联网上发现了一种定义可选参数的技巧,例如:

          path: /getdata/{?my_id}

,但不适用于无服务器。 而且我在部署时又遇到了这个错误:

 Resource's path part only allow a-zA-Z0-9._- and curly braces at the beginning and the end.

我还想知道是否要更改:

 my_id: false

会是我的情况(但事实并非如此)

那么什么是无服务器方式来使my_id可选,所以这两个http都调用:

http://.../getdata
http://.../getdata/12345

将由MyFunc管理吗?

希望有一个更清洁的解决方案,因为它不需要创建两个不同的端点/ func / lambda

谢谢

1 个答案:

答案 0 :(得分:4)

定义两个事件。

MyFunc:
  handler: handler.myFunc
  events:
    - http:
        path: /getdata/
        method: GET
    - http:
        path: /getdata/{id}
        method: GET

然后,路径变量id将与API Gateway一起使用。在您的Lambda代码中检查event.pathParameters.id。请注意,因为如果未显示event.pathParameters,则不必定义id

更新

拥有

request:
  parameters:
    paths:
      id: false
无服务器yaml中的

对生成的CloudFormation模板没有任何影响。您可以使用sls package -p /package/dir自己检查它。