假设我有一个无服务器的应用程序,它使用由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
时才有效。
答案 0 :(得分:0)
就我个人而言,我并不担心。由于可以配置的元素数量众多,因此需要一定程度的冗长,但冗余绝不会对应用程序的性能产生负面影响。虽然它看似多余,但您真正拥有的是在功能上非常独特地影响变化的粒度,以及清晰度以了解它们之间的差异。
如果你想清理serverless.yml整体看看可能是针对所有函数定义或可能是每个事件的单独文件https://serverless.com/framework/docs/providers/aws/guide/variables/#reference-variables-in-other-files
通过将相关实体保持在一起但隔离,可以更好地为您提供服务,这样在查看基本的serverless.yml文件时,其认知负荷就会降低。