J'essaie d'obtenir un défi de Twitter Webhook CRC travaillant sur AWS Lambda & API Gateway
Je suis en train de suivre cela tutoriel et jusqu'à présent, le webhook fonctionne localement mais pas sur AWS.
Voici le code que j'ai dans 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()
La réponse que je reçois lorsque j'envoie une demande d'accès à la liaison de passerelle API
https: //#######.execute-api.us-east-2.amazonaws.com/dev/twitter? CRC_Token = foo
Je reçois une erreur:
{"Message": "Jeton d'authentification manquant"}
Quand j'exécute un test sur API Gateway, je reçois cela vers la fin des journaux:
SAT Dec 11 19:09:54 UTC 2021: En-têtes de réponse du point final: {Date = Sam, 11 déc. 2021 19:09:54 GMT, Contenu-Type = Application/JSON, Longueur de contenu = 114, Connexion = Garder-Alive, x-amzn-demandesd = 5C1AC93D-9F24-43B1-A8DD-42EF0210A4E3, Erreur de fonction X-AMZ-Fonction = Non géré, X-AMZN-Remappess-Contenu-Longueur = 0, X-AMZ-Exécuté-Version = $ Dernier, x -Amzn-trace-id = root = 1-61B4F77E-F17E25F619A9C5287A90CA8A; SAMPLED = 0} SAT Dec 11 19:09:54 UTC 2021: Corps de réponse du point final avant les transformations: {"erroressage": "2021-12-111T19: 09: 54.379Z 5C1AC93D-9F24-43B1-A8DD-42F0210A4E3 Tâche OPIME OUT OUT DE 3,02 secondes "} SAT 11 19:09:54 UTC 2021: L'exécution de Lambda a échoué avec Statut 200 en raison de l'erreur de la fonction client: 2021-12-11T19: 09: 54.379Z 5C1AC93D-9F24-43B1-A8DD-42F0210A4E3 Tâche expirée après 3,02 secondes. Demande de la Lambda: 5C1AC93D-9F24-43B1-A8DD-42F0210A4E3 SAT 11 19:09:54 UTC 2021: Méthode terminée avec Statut: 502
Je suis sûr que c'est quelque chose de simple, mais c'est ma première fois que je travaille avec Webhooks et AWS, donc je ne peux pas encore y mettre un doigt à ce sujet, aucune aide sera très appréciée
Du message d'erreur:
{"errorMessage":"2021-12-11T19:09:54.379Z 5c1ac93d-9f24-43b1-a8dd-42ef0210a4e3 Task timed out after 3.02 seconds"}
Les Lambdas par défaut sont définies pour exécuter pendant 3 secondes, mais ce n'est pas assez de temps à quatre cas de votre utilisation. Vous pouvez augmenter la durée d'exécution autorisée pour la fonction dans le General Configurations
pour la Lambda:
Pour l'erreur de passerelle API:
{"message":"Missing Authentication Token"}
Tout d'abord, vous devez vérifier si les méthodes de passerelle API sont déployées correctement et que vous appelez la méthode correcte à l'aide de l'URL correcte. Pour toute modification de votre API, vous devez le redéployer, sinon cela ne sera pas pris en compte:
Si vous avez une clé API configurée, vous devez le transmettre avec x-api-key
entête.