Как устранить "Недопустимая ошибка заголовка PKC58" в лямбда-AWS
Я пытаюсь выполнить jwt.encode
на маленькое сообщение с закрытым ключом, которое я получаю из DynamoDB. Моя рабочая станция - 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 ответ
Решение
Эта проблема была решена после того, как я перестроил свой лямбда-пакет в среде Linux и снова развернул его в AWS Lambda.
Я создал образ докера из python3.7.4 и развернул пакет в lambda из контейнера.
Это решение также решает проблему:
ImportError: /var/task/cryptography/hazmat/bindings/_constant_time.so: invalid ELF header