The issue is two fold. One, the resultTtlInSeconds is set on every endpoint in the serverless.yml file yet in AWS Console I can see that only one custom authorizer with only one TTL gets created, so the fact that I am setting the resultTtlInSeconds in all n of my endpoints makes no sense.
Secondly, everything was working fine for me with a resultTtlInSeconds: 3600 setting until recently when it randomly decided to reject every request as unauthorized. The solution was the change it to 0, but that means that there is no caching even for identical requests (not good if you custom authorizer calls DynamoDB, for example).
This is an old thread but hopefully someone can either benefit from the clarity or can help us understand what is going on here.