Скажем, у меня есть серверное приложение, которое использует несколько функций Lambda, запускаемых по событию HTTP, где все они следуют одинаковому формату URL (один и тот же параметр пути) - например: Путь к функции 1: events/{id}
Путь к функции 2: events/{id}/attendees
Путь к функции 3: events/{id}/join
Мой serverless.yml
начинает выглядеть следующим образом:
...
functions:
get_event:
handler: handler.getEvent
events:
- http:
path: events/{id}
method: get
cors: true
request:
parameters:
paths:
id: true
get_event_attendees:
handler: handler.getEventAttendees
events:
- http:
path: events/{id}/attendees
method: get
cors: true
request:
parameters:
paths:
id: true
join_event:
handler: handler.joinEvent
events:
- http:
path: events/{id}/join
method: post
cors: true
request:
parameters:
paths:
id: true
Как можно реорганизовать эти объявления событий http, чтобы уменьшить избыточность?
Мне известен синтаксис безсерверных переменных , но я не уверен, как сделать что-то более похожее на функцию, которая принимает в качестве аргументов различные параметры пути и возвращает соответствующий YML.
Я считаю, что делать что-то вроде:
custom:
httpRequest:
parameters:
paths:
id: true
...
functions:
get_event:
handler: handler.getEvent
events:
- http:
path: events/{id}
method: get
request: ${self:custom:httpRequest}
get_event_attendees:
handler: handler.getEventAttendees
events:
- http:
path: events/{id}/attendees
method: get
request: ${self:custom:httpRequest}
...
работает только в том случае, если все HTTP-функции, которые я когда-либо пишу, имеют только один параметр пути id
.