1

以下のコマンドでサーバーレス フレームワークの関数を作成しました。

sls function create some/api

次に、schelton コードが作成されました。

'use strict';

module.exports.handler = function(event, context, cb) {
  return cb({
    message: 'Go Serverless! Your Lambda function executed successfully!'
  });
};

そして、応答テンプレートは以下のようなものです:

s-function.json

  "responses": {
    "400": {
      "statusCode": "400"
    },
    "default": {
      "statusCode": "200",
      "responseParameters": {},
      "responseModels": {
        "application/json;charset=UTF-8": "Empty"
      },
      "responseTemplates": {
        "application/json;charset=UTF-8": ""
      }
    }
  }

しかし、 のようなコールバック関数にエラーオブジェクトを返すとcb(err, null)、ちゃんとエラーメッセージが表示されるのですが、statusCode が 200 になっています。

のようなコールバック関数を呼び出すように変更した場合cb("400", err)、statusCode は適切に 400 を返しますが、応答本文は良くありません: {"errorMessage":"400"}.

ボットの statusCode (400 だけでなく、401、403、404、500 など) とエラー メッセージを表示するための適切な設定はありますか?

4

1 に答える 1

1

次の応答テンプレートを使用します。ラムダ関数から返されたメッセージselectionPatternが応答テンプレートで指定されたものと一致する場合、正しいステータス コードが返されます。

"responseTemplate": {
    "400": {
        "selectionPattern": "^\\[BadRequest\\].*",
        "statusCode": "400"
    },
    "401": {
        "selectionPattern": "^\\[Unauthorized\\].*",
        "statusCode": "401"
    },
    "403": {
        "selectionPattern": "^\\[Forbidden\\].*",
        "statusCode": "403"
    },
    "404": {
        "selectionPattern": "^\\[NotFound\\].*",
        "statusCode": "404"
    },
    "409": {
        "selectionPattern": "^\\[Conflict\\].*",
        "statusCode": "409"
    },
    "500": {
        "selectionPattern": "^\\[Process exited|ServerError\\].*",
        "statusCode": "500"
    },
    "504": {
        "selectionPattern": "^\\[Task timed out\\].*",
        "statusCode": "504"
    },
    "default": {
        "statusCode": "200",
        "responseParameters": {},
        "responseModels": {},
        "responseTemplates": {
            "application/json": ""
        }
    }
}
于 2016-06-29T06:15:45.523 に答える