【質問内容】
下記のように、PKCS#12ファイルから、証明書とプライペートキー抽出、.pemファイルへ出力し
エンドポイントURLへ接続する処理を作成しています。
ローカル環境(Windows10)では問題無く動作したのですが、AWS Lambda上にアップロードした際
下記ランタイムエラーで動作しませんでした。
該当モジュールは
pip install pyOpenSSL -t .
にて該当PGと同じ階層にインストールし、ZIPファイルをアップロードしております。
pyOpenSSLをインストールした中の「cryptography」が動作しないようですが、何か対応方法はあるのでしょうか?
【懸念事項】
pyOpenSSLのモジュールを、ローカル環境(Windows10)でインストールしましたが
AWS LambdaはLinuxベースの為、動作しないようなことはあるのでしょうか?
【Lambdaエラーメッセージ】
{
"errorMessage": "Unable to import module 'モジュール名': No module named 'cryptography.hazmat.bindings._constant_time'",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}
【Pythonバージョン】
ローカル環境:3.8.3
Lambda環境:3.8
よろしくおねがいします。
python3
1 2from requests import Session 3from OpenSSL import crypto 4 5################################################## 6# クライアント認証https POST接続 7# 引数 8# P12File : PKCS12ファイルパス 9# P12passwd : P12 パスワード 10# client_certs_pem : 証明書、プライベートキー出力ファイル名パス 11# url : 接続先URLアドレス 12# POSTdata : POST接続パラメーター 13# 戻り値 14# レスポンスコード、メッセージ 15# 200 or 403 ...any 16################################################## 17def func_httpscon(P12File, P12passwd, client_certs_pem, url, POSTdata): 18 19 #PKCS12ファイルから、 証明書、プライベートキー出力ファイル 20 with open(P12File, 'rb') as p12_file, \ 21 open(client_certs_pem, 'wb') as cert_file_Writer: 22 23 p12 = crypto.load_pkcs12(p12_file.read(), bytes(P12passwd, 'utf-8')) 24 25 cert_file_Writer.write(crypto.dump_certificate( 26 crypto.FILETYPE_PEM, p12.get_certificate())) 27 28 cert_file_Writer.write(crypto.dump_privatekey( 29 crypto.FILETYPE_PEM, p12.get_privatekey())) 30 31 # https接続 32 s = Session() 33 s.cert = client_certs_pem 34 35 try: 36 r = s.post(url, params=POSTdata) 37 status_code = r.status_code 38 status_text = r.text 39 # 接続エラー 40 except: 41 status_code = 999 42 status_text = "Func_HTTPSCon接続エラーです。" 43 44 print("status_code : " + str(status_code)) 45 print("status_message :" + status_text) 46 47 return status_code, status_text
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/26 08:32