Hooking up a Mangum lambda to CloudFront as EventType: origin-request returns a 502 response: "The Lambda function result failed validation: The function tried to add, delete, or change a read-only header."
According to the documentation, the Content-Length Header is one of the read-only headers for origin-request events. Not quite sure why. But it's certainly one of the headers returned when calling the lambda. I use the lambda to handle API requests, so it needs IncludeBody, which is only available with origin-request.
I was able to get around this by hijacking the response:
def handler(event, context):
response = Mangum(app, lifespan="off")(event, context)
if 'headers' in response:
response['headers'].pop('content-length')
return response
Hooking up a Mangum lambda to CloudFront as
EventType: origin-requestreturns a 502 response: "The Lambda function result failed validation: The function tried to add, delete, or change a read-only header."According to the documentation, the
Content-LengthHeader is one of the read-only headers fororigin-requestevents. Not quite sure why. But it's certainly one of the headers returned when calling the lambda. I use the lambda to handle API requests, so it needsIncludeBody, which is only available with origin-request.I was able to get around this by hijacking the response: