aws-apigateway: requestValidatorOptions does not create validator
- Dominant language
- TypeScript
- Stars
- 12.9k
- Forks
- 4.6k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 83
Description
### Describe the bug
I am trying to add a request validator to my Lambda proxy API. I am setting `requestValidatorOptions` in `defaultMethodOptions` but no validator is being created and added to the methods.
In the UI/console I can add a validation to the "ANY" method which is automatically created as part of `LambdaRestApi`.
Is there another way to add the validator to the proxy?
### Expected Behavior
Validator is created and added to all methods.
### Current Behavior
The cloudformation template shows the RequestParameters but no validator. Adding `requestValidatorOptions` is not recognized as a change during deployment.
### Reproduction Steps
Create an api gateway using `LambdaRestApi`:
```
new apigateway.LambdaRestApi(this, "LambdaRestApi", {
restApiName: `${env.project}-${subProjectName}-${env.deployer}`,
handler: lambdaFunction,
deployOptions: {
loggingLevel: apigateway.MethodLoggingLevel.INFO,
accessLogDestination: new apigateway.LogGroupLogDestination(logGroup),
accessLogFormat: apigateway.AccessLogFormat.jsonWithStandardFields(),
},
defaultMethodOptions: {
apiKeyRequired: true,
requestParameters: {
"method.request.querystring.name": true,
"method.request.querystring.env": false,
},
requestValidatorOptions: {
requestValidatorName: "DefaultValidator",
validateRequestParameters: true,
},
},
endpointTypes: [apigateway.EndpointType.REGIONAL],
})
```
### Possible Solution
_No response_
### Additional Information/Context
_No response_
### CDK CLI Version
2.122.0
### Framework Version
_No response_
### Node.js Version
v20.10.0
### OS
macOS 14.4.1
### Language
TypeScript
### Language Version
_No response_
### Other information
"AWS::ApiGateway::Method" from template.json:
```
"ApiGatewaySetupLambdaRestApiproxyANYF9A30FCD": {
"Type": "AWS::ApiGateway::Method",
"Properties": {
"ApiKeyRequired": true,
"AuthorizationType": "NONE",
"HttpMethod": "ANY",
"Integration": {
"IntegrationHttpMethod": "POST",
"Type": "AWS_PROXY",
"Uri": {
"Fn::Join": [
"",
[
"arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/",
{
"Fn::GetAtt": [
"LambdaSetuplambdaE27E4408",
"Arn"
]
},
"/invocations"
]
]
}
},
"RequestParameters": {
"method.request.querystring.name": true,
"method.request.querystring.env": false
},
"ResourceId": {
"Ref": "ApiGatewaySetupLambdaRestApiproxyD538D22D"
},
"RestApiId": {
"Ref": "ApiGatewaySetupLambdaRestApi68D08033"
}
},
"Metadata": {
"aws:cdk:path": "MyStack/ApiGatewaySetup/LambdaRestApi/Default/{proxy+}/ANY/Resource"
}
},
```
Contributor guide
Assessment
This issue has not been assessed yet.