无服务器框架,设置REST API Lambda

时间:2019-12-09 06:43:04

标签: aws-lambda serverless-framework

我想在dev-api.example.com/auth/*处提供一个lambda。 lambda的行为就像是auth服务。因此它将具有类似

的网址
  • dev-api.example.com/auth/register
  • dev-api.example.com/auth/login
  • 还有更多...

更明智的是,将更多的lambda绑定到单个ApiGateway

根据设计决定,我编写了以下serverless.yml文件。

// serverless.yml
...
custom:
  customDomain:
    domainName: dev-api.example.com
    stage: prod
    basePath: ''
...

functions:
  auth:
    handler: src/index.handler
    events:
      - http:
          method: ANY
          path: /{auth+}

它似乎不起作用。每当我访问dev-api.example.com/auth/register时,都会返回Not Found错误。

2 个答案:

答案 0 :(得分:1)

AWS API网关仅接受{proxy+}语法(Link),然后我认为无服务器fw仅支持{proxy+}{any+}

如果您只想创建一个函数来处理2个api端点,则在这种情况下,端点是

POST /auth/register(我认为是这样)

POST /auth/login

然后您在serverless.yml中进行设置,例如

...
functions:
  auth:
    handler: src/index.handler
    events:
      - http:
          method: ANY
          path: auth/{any+} # this matches any path, the token 'any' doesn't mean anything special
...

答案 1 :(得分:0)

感谢@hoangdv,您的建议几乎解决了问题。

问题出在path上。应该是path: auth/{proxy+}而不是path: /{auth+}

functions:
  auth:
    handler: src/index.handler
    events:
      - http:
          method: ANY
          path: auth/{proxy+}