やりたいこと
shopifyというシステムからwebhookでLambdaにPOSTを行い、その通信が改竄されていないかのチェックを行いたいです。
python
1import json 2import base64 3import hmac 4import hashlib 5 6SHARED_SECRET = b'my_key' 7 8def verify_webhook(data, hmac_header): 9 dig = hmac.new(SHARED_SECRET, data, hashlib.sha256).hexdigest() 10 calculated_hmac = base64.b64encode(hmac.new(key, data, digestmod=hashlib.sha256).digest()) 11 return hmac.compare_digest(hmac_header, calculated_hmac) 12 13 14def lambda_handler(event, context): 15 16 hmac_header = event['params']['header']['X-Shopify-Hmac-Sha256'] 17 verified = verify_webhook(event, hmac_header) 18 19 print(verified)
しかし、dig = hmac~~
の行で毎回エラーとなってしまいます。
エラー内容は、以下です。
'str' object cannot be interpreted as an integer: TypeError Traceback (most recent call last): File "/var/task/lambda_function.py", line 19, in lambda_handler verified = verify_webhook(event, hmac_header) File "/var/task/lambda_function.py", line 9, in verify_webhook dig = hmac.new(SHARED_SECRET, bytes(data), hashlib.sha256).digest() TypeError: 'str' object cannot be interpreted as an integer
こちらわかる方いますでしょうか?
エラーメッセージに書かれているソースコードと提示されたソースコードが一致していませんよ。あと、少なくともエラーメッセージを呼んで何が問題なのかは把握してください。
回答1件
あなたの回答
tips
プレビュー