web-dev-qa-db-fra.com

Twitter CRC Challenge ne fonctionne pas sur AWS Lambda / API Gateway

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

1
Lou

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:

enter image description here

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:

enter image description here

Si vous avez une clé API configurée, vous devez le transmettre avec x-api-key entête.

1
Ervin Szilagyi