簡體   English   中英

Twitter CRC 挑戰不適用於 AWS Lambda/API 網關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM