使用基本路径映射从现有api网关调用服务

时间:2019-09-16 20:55:35

标签: aws-lambda aws-api-gateway serverless-framework

我们的API具有以下端点:

POST /users - create a user
GET /users/{userId} - get a particular user

GET /posts/{postId} - get a particular post
GET /posts/{postId}/users - get the users who contributed to this post

我定义了两个服务:users-service和posts-service。在这两个服务中,我像这样定义lambda。我正在使用serverless-domain-manager插件来创建基本路径映射:

/users-service/serverless.yaml:

service: users-service

provider:
  name: aws
  runtime: nodejs10.x
  stage: dev

plugins:
  - serverless-domain-manager

custom:
  customDomain:
    domainName: 'serverlesstesting.example.com'
    basePath: 'users'
    stage: ${self:provider.stage}
    createRoute53Record: true

functions:
  create:
    name: userCreate
    handler: src/create.handler
    events:
      - http:
          path: /
          method: post
  get:
    name: userGet
    handler: src/get.handler
    events:
      - http:
          path: /{userId}
          method: get

/rooms-service/serverless.yaml:

service: posts-service

provider:
  name: aws
  runtime: nodejs10.x
  stage: dev

plugins:
  - serverless-domain-manager

custom:
  customDomain:
    domainName: 'serverlesstesting.example.com'
    basePath: 'posts'
    stage: ${self:provider.stage}
    createRoute53Record: true

functions:
  get:
    name: postsGet
    handler: src/get.handler
    events:
      - http:
          path: /{postId}
          method: get
getUsersForPost:
    handler: userGet ? 
    events: ??

问题是GET /posts/{postId}/users实际上从userGet调用了相同的users-service lambda。但是,该lambda的来源存在于用户服务而不是后服务中。

所以我的问题变成: 如何使用基本路径映射从另一个服务引用一个服务?换句话说,posts服务是否可以实际调用父自定义域并调用用户基本路径映射及其服务?

1 个答案:

答案 0 :(得分:0)