无服务器框架v1 - 一个服务中的多个资源

时间:2016-07-16 06:35:10

标签: aws-api-gateway serverless-framework

我有两个资源,游戏和玩家,都有crud功能。 这些应该是在同一个无服务器服务吗?我想把它们分开,但是我怎么把它们放在同一个api网关中呢?

3 个答案:

答案 0 :(得分:0)

无服务器框架项目部署单个API网关。因此,如果您希望它位于不同的API网关中,则需要单独的无服务器框架项目。

根据您所提供服务的规模,它可能有意义,也可能没有。

要将两个API网关合并到更高的位置,您可以使用API​​网关自定义域并根据不同API网关和阶段的路径代理请求,为它们保留一个单独的域。

答案 1 :(得分:0)

在您的示例中,您希望将它们保存在同一个无服务器框架中。我会在player.js中创建两个文件game.jssrc/controllers来分离逻辑。

您可以使用以下YAML文件

设置无服务器
functions:
  player_info:
    handler: src/controllers/player.info
    events:
    - http:
        path: player # path in the url
        method: get
  player_create:
    handler: src/controllers/player.create
    events:
    - http:
        path: player # path in the url
        method: post
  player_delete:
    handler: src/controllers/player.delete
    events:
    - http:
        path: player # path in the url
        method: delete
  game_info:
    handler: src/controllers/game.info
    events:
    - http:
        path: player # path in the url
        method: get
  game_create:
    handler: src/controllers/game.create
    events:
    - http:
        path: player # path in the url
        method: post
  game_delete:
    handler: src/controllers/game.delete
    events:
    - http:
        path: player # path in the url
        method: delete

答案 2 :(得分:0)

执行所需操作的一种方法是使用无服务器部署lambda,但手动设置API网关以将端点链接到lambdas。

此处说明了无服务器的限制:https://serverless.com/framework/docs/providers/aws/guide/services/

它声明:

  

目前,每个服务都将在AWS API Gateway上创建单独的REST API。由于AWS API Gateway的限制,每个REST API只能有一个自定义域。如果您计划制作大型REST API,请记下此限制。此外,修复工作正在进行中,并且是首要任务。

根据我们的经验,我们设法在客户端使用不同的API和路由对象。

要确定它们是否应该在同一个无服务器服务中,您需要进入建模。在我们的例子中,我们回答了这个问题:

  1. 实体是否相关?
  2. 实体和方法是否会以相同的速率变化?
  3. 消费者是否会消费一组实体而不消耗另一组实体?
  4. 当你改变游戏时你会改变玩家等吗?

    此链接可以帮助您解答:https://martinfowler.com/articles/microservices.html