Я пытаюсь кэшировать политику IAM, возвращаемую лямбда-авторизатором, когда он впервые проверяет токен JWT. Я включил и установил authorizerResultTtlInSeconds
на 3500
секунды в API Gateway Authorizer. Тем не менее, я все еще вижу запрос, идущий к лямбда-функции Authorizer в пределах периода кэширования.
Мой node.js скрипт выглядит следующим образом:
const jwt = require('jsonwebtoken');
const jwksClient = require('jwks-rsa');
const keyClient = jwksClient({
jwksUri: process.env.JWKS_URI
})
const allow = {
"principalId": "user",
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": process.env.RESOURCE // RESOURCE = *
}
]
}
}
const unauthorized = {
"error": "Unauthorized",
}
//excluded verificationJWTOptions object and getSigningKey function for simplicity
function validateJWTToken(token, callback) {
jwt.verify(token, getSigningKey, verificationJWTOptions, (error) => {
if (error) {
callback(unauthorized)
} else {
callback(null, allow)
}
})
}
exports.handler = (event, context, callback) => {
const token = extractTokenFromHeader(event);
validateJWTToken(token, callback);
}
Не уверен, что мне не хватает , Любая помощь будет высоко ценится!