首页 > 解决方案 > 具有 Lambda 集成的无服务器响应模板

问题描述

我已经阅读了无服务器和 AWS 的文档,但我只是没有得到响应模板。我有一个调用另一个模块的 lambda 函数,该模块将返回一个带有一个info可能还有一个error属性的对象。如果错误属性存在,我想抛出一个错误并使用 API Gateway 中的响应模板来处理它。

serverless.yml(不知道里面有什么400 pattern

functions:
  onboard:
    handler: api/onboard.onboard
    events:
      - http:
          path: /onboard
          method: post
          integration: lambda
          request:
            passThrough: NEVER
            schema:
              application/json: ${file(models/onboard.schema.json)}
            template:
              application/json: $input.body
          response:
            200:
              pattern: ''
            400:
              pattern: '.*"error".*' // WHAT GOES HERE???
              template: $input.path('$.errorMessage')

拉姆达

const onboard = async (event) => {
  // returns an object with info/error property
  const response = await someModule();
  /* example response
  const response = {
    error: 'some error',
    name: event.name
  };
  */
  
  if(response.error) {
    context.done(JSON.stringify(response));
  }

  return response;
};

标签: node.jsaws-lambdaaws-api-gatewayserverless-frameworkaws-serverless

解决方案


我错过了statusCodes财产。

functions:
  onboard:
    handler: api/onboard.onboard
    events:
      - http:
          path: /onboard
          method: post
          integration: lambda
          request:
            passThrough: NEVER
            schema:
              application/json: ${file(models/onboard.schema.json)}
            template:
              application/json: $input.body
          response:
            statusCodes:
              200:
                pattern: ''
              400:
                pattern: '.*"error".*'
                template: $input.path('$.errorMessage')

推荐阅读