即使在无服务器yaml中设置了params后,QueryString参数也未得到验证

Abi*_*ami 6 aws-lambda serverless-framework

我通过使用无服务器框架部署的lambda函数配置了API网关.我已经在yaml文件中定义了一些queryStringParameters为true.但是,即使在URL中未传递Required(强制)queryStringParams,请求也会通过该服务.PFB类似的配置.

functions: functionName: name: serviceName handler: handler.handle events: - http: path: /path method: get request: parameters: querystrings: param1: true param2: true

似乎无服务器无法验证param1和param2是否作为queryString传递.我们应该有一个明确的请求验证器吗?是否可以使用无服务器?

Hub*_*ber 1

来到这里寻找一个简单、直接的答案,并且不想按照“使用无服务器框架的请求验证”中的建议添加插件。

如果您根据需要设置参数并希望验证它们,则必须在serverless.yml中添加请求验证器

Resources:
  ParameterRequestValidator:
    Type: AWS::ApiGateway::RequestValidator
    Properties:
      Name: ParameterRequestValidator
      RestApiId:
        Ref: ApiGatewayRestApi
      ValidateRequestBody: false
      ValidateRequestParameters: true

  ApiGatewayMethodNameOfYourApiLookItUpInYourTemplate:
    Properties:
      RequestValidatorId:
        Ref: ParameterRequestValidator
Run Code Online (Sandbox Code Playgroud)

您想要验证的方法将被命名为类似ApiGateway<Method><Get | Post | Patch | Put | Delete >:. 您可以在将无服务器函数打包到创建的模板文件中时查找该名称。

此解决方案请访问https://github.com/serverless/serverless/issues/5034#issuecomment-581832806