2

How do I define and validate URL Query String Parameters for an AWS::Serverless::Api in a SAM template?

They don't seem to be mentioned in the documentation https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-api.html

Just to be clear this is what I am talking about enter image description here

1
  • Please add to your question your template yaml/json Commented Nov 20, 2020 at 16:40

2 Answers 2

3

The URL Query String Parameters is defined in AWS::Serverless::Function rather than AWS::Serverless::Api using RequestParameters property.

All parameter names must start with method.request and must be limited to method.request.header, method.request.querystring, or method.request.path.

For example to define email, name in URL Query String Parameters and Authorization in HTTP Request Headers u can do the following:

Events:
 ApiEvent:
   Type: Api
   Properties:
     Path: /path
     Method: get
     RequestParameters:
       - method.request.querystring.email:
           Required: true
           Caching: false
       - method.request.querystring.name:
           Required: true
           Caching: false
       - method.request.header.Authorization:
           Required: true
           Caching: true

I hope this helps.

Sign up to request clarification or add additional context in comments.

Comments

2

I think that your response is in another resource, AWS::ApiGateway::Method.

Check the documentation (search for Request Parameters):

The request parameters that API Gateway accepts. Specify request parameters as key-value pairs (string-to-Boolean mapping), with a source as the key and a Boolean as the value. The Boolean specifies whether a parameter is required. A source must match the format method.request.location.name, where the location is querystring, path, or header, and name is a valid, unique parameter name.

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-requestparameters

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.