GraphQLの時は、スキーマファイルで値の型情報定義や必須有無を手軽に指定できるけど、APIGatewayなどのRestの場合はどのようにやるのかをシェアします。この方法を覚えるとバリデーションのソースコードの量がグッと減ります。
(ビジネスロジックに依存したバリデーションは流石にソースコードでカバーする必要がありますが)

serverless.yml

functions:
  Example:
    handler: src/functions/Example.handler
    name: '${self:provider.stage}-Example'
    events:
      - http:
          path: '/example'
          method: post
          request:
            schema:
              application/json: '${file(rest_request_models/post_example.json)}'

JSONSchema定義

rest_request_models/post_example.json

{
  "definitions": {},
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "title": "POST /sample/ schema",
  "required": ["sample01", "sample02"],
  "properties": {
    "sample01": {
      "type": "string",
      "title": "Sample01"
    },
    "sample02": {
      "type": "string",
      "title": "Sample01"
    }
  }
}

デプロイしたら、実際にリクエストを出してみてください。上記の例では、sample01とsample02をBodyに含めていないリクエストを行なった場合に、400 bad parameterが返ってくるはずです。

また、細かいJSONSchemaの定義方法は、公式サイトを見てキャッチアップされるのを推奨します。JSON Schemaのバージョンに気をつけて定義作成してくださいね。

https://json-schema.org/