You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda Authorizer如何让缓存TTL适配Token实际过期时间

Lambda Authorizer 动态匹配Token有效期的缓存TTL配置方案

有原生支持的实现方式,不需要额外搭建缓存层或者修改网关核心逻辑,直接利用Lambda Authorizer的返回字段能力就能解决Token过期后仍被缓存放行的问题。


核心实现逻辑

Lambda Authorizer 支持通过返回结果中的ttlOverride字段,覆盖单条授权结果的默认缓存TTL,优先级高于你在控制台/OpenAPI配置里设置的全局TTL值。你只需要在授权校验逻辑里增加TTL动态计算步骤即可:

  • 校验Token合法性的同时,解析Token自带的过期时间(比如JWT的exp声明、自定义Token的过期字段)
  • 计算当前时间到Token过期点的剩余有效秒数
  • 取「全局配置的默认缓存TTL」和「Token实际剩余有效秒数」的较小值,作为ttlOverride的值返回给API Gateway
  • 如果Token剩余有效期小于等于0,直接返回Deny拒绝策略即可

代码示例(Python)

import time
import jwt

def lambda_handler(event, context):
    token = event["authorizationToken"].replace("Bearer ", "")
    try:
        # 替换为你实际使用的Token校验逻辑
        payload = jwt.decode(token, "your_sign_key", algorithms=["HS256"])
        # 计算Token剩余有效时长
        remaining_valid_sec = payload["exp"] - int(time.time())
        # Token已过期直接拒绝
        if remaining_valid_sec <= 0:
            return generate_policy("user", "Deny", event["methodArn"])
        # 动态计算缓存TTL:默认300秒,最长不超过Token实际剩余有效期
        cache_ttl = min(300, remaining_valid_sec)
        # 构造返回结果,带上ttlOverride覆盖默认缓存时长
        policy = generate_policy(payload["user_id"], "Allow", event["methodArn"])
        policy["ttlOverride"] = cache_ttl
        policy["context"] = {"user_id": payload["user_id"]}
        return policy
    except Exception as e:
        return generate_policy("user", "Deny", event["methodArn"])

def generate_policy(principal_id, effect, resource):
    return {
        "principalId": principal_id,
        "policyDocument": {
            "Version": "2012-10-17",
            "Statement": [{
                "Action": "execute-api:Invoke",
                "Effect": effect,
                "Resource": resource
            }]
        }
    }

注意事项

  • ttlOverride的取值不能超过你配置的全局缓存TTL,就算传入更大的值,API Gateway也会自动截断为全局TTL值,直接取两者最小值即可
  • 不建议把ttlOverride设为0,该值为0时API Gateway不会缓存本次授权结果,所有请求都会透传到Lambda校验,高并发场景下容易触发Lambda限流,除非你有明确的全量实时校验需求,否则建议给剩余有效期极短的场景留1~5秒的最小缓存兜底
  • 该方案不需要调整API Gateway侧的任何Authorizer配置,仅修改Lambda校验代码即可生效,配置完成后缓存失效时间会和Token过期时间完全对齐,不会再出现过期Token被缓存放行的问题

内容的提问来源于stack exchange,提问作者jack_sparrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:39:09