【发布时间】:2018-11-15 04:54:54
【问题描述】:
假设我有一个无服务器应用程序,它使用由 HTTP 事件触发的多个 Lambda 函数,它们都遵循类似的 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事件声明以减少冗余的好方法是什么?
我知道serverless variables 语法,但不确定我如何才能使东西更像一个函数,它接受不同的路径参数作为参数,并返回适当的 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 时才有效。
【问题讨论】:
标签: refactoring yaml serverless-framework