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

使用aws-sdk调用Cognito查询接口耗时超700ms如何优化?

Cognito查询接口延迟优化方案

代码侧优化

  • 全局复用Cognito实例
    不要在路由处理逻辑中重复初始化CognitoIdentityServiceProvider实例,将实例初始化移到模块顶层,全局复用连接,避免每次请求重新建立TCP连接产生的开销。
  • 启用AWS SDK HTTP长连接
    你当前使用的是AWS SDK v2,默认没有开启HTTP Keep-Alive,每次请求都会重新握手,增加延迟,调整初始化配置即可:
    import AWS from 'aws-sdk';
    import https from 'https';
    
    const Cognito = new AWS.CognitoIdentityServiceProvider({
      region: '你的Cognito区域',
      accessKeyId: '...',
      secretAccessKey: '...',
      // 新增以下配置启用长连接
      httpOptions: {
        agent: new https.Agent({
          keepAlive: true,
          maxSockets: 50, // 根据你的并发量调整
          rejectUnauthorized: true
        })
      }
    });
    
  • 优先本地解析JWT令牌(收益最高)
    大部分场景下调用getUser接口只是为了获取AccessToken中携带的用户声明、验证令牌有效性,这种情况完全不需要调用Cognito远端接口,直接本地验证解析JWT即可,耗时可以从700ms降到10ms以内。
    你可以通过jsonwebtoken、jwks-rsa库获取Cognito公钥后本地验证令牌,仅当需要获取用户最新属性、确认令牌是否被吊销时,再调用Cognito接口。
  • 增加热点用户数据缓存
    对于高频查询的用户数据,可以在服务侧增加Redis或内存缓存,缓存过期时间设置为小于令牌有效期(例如3-5分钟),相同用户的重复请求直接走缓存返回,避免重复调用Cognito接口。

AWS侧配置优化

  • 确保服务和Cognito同区域部署
    检查你的Express服务部署的AWS区域,必须和Cognito用户池所属区域完全一致,跨区域请求会带来至少几百ms的额外公网延迟。
  • 配置Cognito VPC端点
    如果你的Express服务部署在AWS VPC内,可配置Cognito的接口型VPC端点,调用Cognito的请求会直接走AWS内部私有网络,不需要绕行公网,可降低30%以上的网络延迟,同时提升安全性。
  • 排查Cognito触发器开销
    检查你的Cognito用户池是否配置了预令牌生成、身份验证等Lambda触发器,这些触发器会在调用getUser等接口时同步执行,如果触发器本身执行耗时较高,会直接体现在接口返回延迟上,可优化触发器代码性能或关闭不必要的触发器。
  • 调整服务出口网络配置
    如果你的服务部署在AWS外,可考虑使用AWS Global Accelerator优化到Cognito区域的公网链路,降低公网传输抖动和延迟。

内容的提问来源于stack exchange,提问作者Joaquim Flávio Almeida Quirino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:36:03