Как объявить необязательный параметр get в Lambda без сервера? - PullRequest
0 голосов
/ 16 октября 2018

Мне бы хотелось понять, есть ли быстрый синтаксис для определения необязательного параметра pathParameter в безсерверном режиме (для развертывания в лямбда-режиме AWS).

вот что у меня есть в моих функциях

functions:

 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 голосов
/ 17 октября 2018

Определить два события.

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

Тогда переменная пути id будет работать с API Gateway.В вашем лямбда-коде проверьте для event.pathParameters.id.Будьте осторожны, поскольку event.pathParameters не нужно определять, если id не представлено.

Обновление:

Имеет

request:
  parameters:
    paths:
      id: false

в безсерверном yaml не влияет на сгенерированный шаблон CloudFormation.Вы можете проверить это самостоятельно, используя sls package -p /package/dir.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...