【发布时间】:2022-01-15 22:57:32
【问题描述】:
我正在尝试在 AWS Lambda 和 API 网关上进行 twitter webhook CRC 挑战
我一直在关注这个tutorial,到目前为止,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 Gateway 链接发送 get 请求时得到的响应
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=未处理,x-amzn-Remapped-Content-Length=0,X-Amz-Executed-Version=$最新,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 任务在 3.02 秒后超时"} 2021 年 12 月 11 日星期六 19:09:54 UTC:由于客户函数错误,Lambda 执行失败,状态为 200: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,所以我还不能完全理解它,任何帮助将不胜感激
【问题讨论】:
标签: python amazon-web-services twitter aws-lambda aws-api-gateway