如何在AWS Lambda中解决``无效的PKCS8标头错误''

时间:2019-08-19 20:28:42

标签: python-3.x aws-lambda jwt pycrypto python-jose

我正在尝试使用从DynamoDB检索到的带有私钥的小型请求消息执行jwt.encode。我的工作站是Mac OS。

该代码在我的本地环境中有效,但是当我尝试在AWS lambda python3.7环境中执行该代码时失败。有关如何解决此问题的任何建议?

{
  "errorMessage": "Invalid PKCS8 header",
  "errorType": "JWSError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 228, in lambda_handler\n    response = send_request(url, body=body)\n",
    "  File \"/var/task/lambda_function.py\", line 67, in send_request\n    token = _gen_jwt(private_key)\n",
    "  File \"/var/task/lambda_function.py\", line 52, in _gen_jwt\n    token = jwt.encode(payload, private_key, algorithm='RS256', headers=headers)\n",
    "  File \"/var/task/jose/jwt.py\", line 61, in encode\n    return jws.sign(claims, key, headers=headers, algorithm=algorithm)\n",
    "  File \"/var/task/jose/jws.py\", line 47, in sign\n    signed_output = _sign_header_and_claims(encoded_header, encoded_payload, algorithm, key)\n",
    "  File \"/var/task/jose/jws.py\", line 168, in _sign_header_and_claims\n    raise JWSError(e)\n"
  ]
}

1 个答案:

答案 0 :(得分:0)

在Linux环境中重建lambda软件包并重新部署到AWS Lambda之后,此问题已解决。

我从python3.7.4创建了一个docker映像,并将包从容器内部部署到lambda。

此解决方案还解决了该问题:

ImportError: /var/task/cryptography/hazmat/bindings/_constant_time.so: invalid ELF header

根据https://github.com/pyca/cryptography/issues/3051