【问题标题】:Serverless Framework function HTTP trigger event configurationServerless Framework函数HTTP触发事件配置
【发布时间】: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


    【解决方案1】:

    我个人不会担心。由于可以配置的元素数量众多,因此需要一定程度的冗长,但冗余绝不会对应用程序的性能产生负面影响。虽然这似乎是多余的,但您真正拥有的是在您的功能中非常独特地影响更改的粒度,以及清楚地了解它们之间的差异。

    如果您想清理 serverless.yml 整体,请考虑将所有函数定义或每个事件拆分为单独的文件https://serverless.com/framework/docs/providers/aws/guide/variables/#reference-variables-in-other-files

    这可能会更好地为您服务,通过将相关实体保持在一起但隔离,因此在查看基本 serverless.yml 文件时认知负荷较少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多