无服务器框架,设置休息 api lambda

Serverless Framework, setting up rest api lambda

我想在 dev-api.example.com/auth/* 上提供一个 lambda。 lambda 将充当身份验证服务。所以它会有像

这样的网址

同样,更多的 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 它 returns Not Found 错误。

AWS API Gateway 只接受{proxy+}语法(Link),那么我认为serverless fw只支持{proxy+}{any+}.

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

POST /auth/register(我也这么认为)

POST /auth/login

然后你在serverless.yml中设置了like

...
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
...

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

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

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