aws / aws/aws-cdk

aws-apigateway: requestValidatorOptions does not create validator

Open
#29,834 7 comments 0 reactions 1 assignee Assigned to @pahud View on GitHub
@aws-cdk/aws-apigateway bug effort/medium p2
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.