[英]AWS Lambda (Python + Flask) basic functionality not working using API Gateway
[英]Twitter CRC Challenge not working on AWS Lambda/API Gateway
我正在嘗試在 AWS Lambda 和 API 網關上獲得 twitter webhook CRC 挑戰
我一直在關注本教程,到目前為止,webhook 在本地工作,但不在 AWS 上。
這是我在 AWS Lambda 中的代碼:
import json
import base64
import hashlib
import hmac
import json
from flask import Flask, request, Response, jsonify
key = '#####################'
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
def webhook_challenge():
consumer_secret_bytes = bytes(key, 'utf-8')
message = bytes(request.args.get('crc_token'),'utf-8')
sha256_hash_digest = hmac.new(consumer_secret_bytes, message , digestmod=hashlib.sha256).digest()
response={
'response_token':'sha256='+base64.b64encode(sha256_hash_digest).decode('utf-8')
}
return json.dumps(response)
webhook_challenge()
當我向 API 網關鏈接發送獲取請求時得到的響應
https://#######.execute-api.us-east-2.amazonaws.com/dev/twitter?crc_token=foo
我收到一個錯誤:
{"message":"缺少身份驗證令牌"}
當我在 API 網關上運行測試時,我在日志末尾得到了這個:
2021 年 12 月 11 日星期六 19:09:54 UTC:端點響應標頭:{Date=Sat,2021 年 12 月 11 日 19:09:54 GMT,Content-Type=application/json,Content-Length=114,Connection=keep-alive, x-amzn-RequestId=5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3, X-Amz-Function-Error=Unhandled, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X -Amzn-Trace-Id=root=1-61b4f77e-f17e25f619a9c5287a90ca8a;sampled=0} 2021 年 12 月 11 日星期六 19:09:54 UTC:轉換前的端點響應正文:{"errorMessage":"2021-12-11T19:09: 54.379Z 5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3 Task timed out after 3.02 seconds"} Sat Dec 11 19:09:54 UTC 2021: Lambda execution failed with status 200 due to customer function error: 2021-12-11T19:09: 54.379Z 5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3 任務在 3.02 秒后超時。 Lambda 請求 ID:5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3 2021 年 12 月 11 日星期六 19:09:54 UTC:方法完成,狀態:502
我確定這很簡單,但這是我第一次使用 webhook 和 AWS,所以我還不能完全確定它,任何幫助將不勝感激
從錯誤消息中:
{"errorMessage":"2021-12-11T19:09:54.379Z 5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3 Task timed out after 3.02 seconds"}
默認情況下,Lambda 設置為運行 3 秒,但這對於您的用例來說還不夠。 您可以在 Lambda 的General Configurations
中增加 function 的允許運行時間:
對於 API 網關錯誤:
{"message":"Missing Authentication Token"}
首先,您應該檢查 API 網關方法是否已正確部署,並且您正在使用正確的 url 調用正確的方法。 對於 API 上的任何更改,您必須重新部署它,否則將不會考慮:
如果您設置了 API 密鑰,則應使用x-api-key
header 傳遞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.