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

AWS Lambda(Python)中JWT生成报错:找不到RS256算法

解决JWT RS256算法找不到的问题

问题本质

RS256是基于RSA的签名算法,PyJWT库本身只提供JWT核心逻辑,底层加密实现依赖cryptography库。你只安装了PyJWT但缺失这个依赖,或者Lambda部署包未包含它,就会触发该报错。

分步解决方法

1. 补装依赖(本地开发环境)

在项目目录下执行安装命令:

pip install pyjwt cryptography

如果用requirements.txt管理依赖,需将两个包都列进去:

pyjwt>=2.8.0
cryptography>=41.0.0

2. 正确打包Lambda部署包

AWS Lambda不会自动安装依赖,必须将代码和依赖一起打包:

  • 新建package文件夹
  • 将依赖安装到该文件夹:
pip install pyjwt cryptography -t package/
  • 把你的Lambda代码文件(比如lambda_function.py)复制到package目录
  • 进入package目录,将所有文件压缩成zip包,再上传到Lambda控制台

3. 代码算法指定验证

确保生成JWT的代码明确指定RS256算法,示例代码如下:

import jwt
from datetime import datetime, timedelta

def generate_signed_jwt(private_key, key_id, client_email, scopes):
    payload = {
        'iss': client_email,
        'scope': ' '.join(scopes),
        'aud': 'https://oauth2.googleapis.com/token',
        'exp': datetime.utcnow() + timedelta(minutes=60),
        'iat': datetime.utcnow()
    }
    headers = {
        'kid': key_id,
        'alg': 'RS256'
    }
    return jwt.encode(payload, private_key, algorithm='RS256', headers=headers)

4. 可选:用Lambda层管理依赖

若不想每次打包都带依赖,可创建Lambda层复用:

  • 按python/lib/python3.x/site-packages目录结构安装依赖(x对应Lambda使用的Python版本)
  • 压缩该目录为zip文件,创建Lambda层并关联到你的函数

额外排查项

  • 确认Lambda的Python版本与本地开发版本一致,避免依赖版本不兼容
  • 检查services-account.json里的私钥格式是否正确,必须以-----BEGIN PRIVATE KEY-----开头、-----END PRIVATE KEY-----结尾,中间换行符不能缺失或多余

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:27