J'ai créé une API en utilisant une fonction AWS Lambda (en utilisant Python). Maintenant, mon code JS réagit frappe cette API chaque fois qu'un événement incendie. Donc, l'utilisateur peut demander l'API autant de fois que les événements sont tirés. Maintenant, le problème est que nous ne recevons pas la réponse de Lambda API séquentiellement. Parfois, nous obtenons la réponse de notre dernière demande plus rapidement que la réponse précédente de la demande précédente. Nous devons donc gérer notre réponse à la fonction Lambda séquentiellement, peut ajouter un délai entre 2 demande ou peut être la mise en œuvre de l'étranglement. Alors, comment puis-je faire ça? P>
3 Réponses :
Avez-vous vérifié le réglage de la concurrence sur Lambda? Vous pouvez étrangler la Lambda là-bas. P>
Mais si vous accélérez la Lambda et que les demandes étant envoyées ne sont pas reçues, l'envoi de demandes peut recevoir une erreur si vous stockez les demandes quelque part sur AWS pour être traitée ultérieurement. P>
Je pense que mettre un SQS devant Lambda pourrait aider. Vous allez frapper une passerelle API, les demandes sont envoyées aux SQS, les demandes de sondages Lambda simultanément (vous pouvez contrôler la concurrence), puis envoyer la réponse en arrière. P>
Pouvons-nous faire quelque chose dans notre code JS réact, aime envoyer la demande avec peu de retard jusqu'à ce que la réponse précédente ne soit pas reçue
En réponse précédente, ce qui pourrait contribuer à pouvoir mettre un SQS devant la Lambda - si l'ordre de traitement est important, vous pouvez également rechercher la file d'attente SQS en tant que file d'attente FIFO, qui conserve la commande: https://docs.aws.amazon.com/awsssimpleQuesqueuService/ Dernier / sqsdeveloperguide / Fifo-files.html P>
Comme le dit l'autre commentaire, l'autre option consiste à limiter la concurrence, mais même à ce moment-là, vous êtes probablement préférable de mettre des SQS à l'avant lorsque vous limitez votre débit. P>
Vous pouvez utiliser la file d'attente FIFO SQS en tant que déclencheur de la fonction Lambda, définissez la taille du lot sur 1 et la simultanéité réservée sur la fonction à 1. Les messages seront toujours traités dans l'ordre et n'interrogeront pas simultanément le message suivant jusqu'à ce que le précédent est complet. p>
Les déclencheurs SQS ne prennent pas en charge la fenêtre du lot - qui «attendra» jusqu'à l'interrogation du prochain message. Il s'agit d'une fonctionnalité pour les déclencheurs Lambda basés sur le flux (KINESIS et DYNAMODB STANDS) P>
Si vous souhaitez simplifier le processus, la fonction Étape vous permettra de gérer les états à l'aide de machines à états et prend en charge la réparation automatique basée sur les sorties d'états individuels. P>
Merci. J'ai mis les SQS et l'a déclenché à ma fonction Lambda. Mais comment changer la taille du lot, actuellement, il montre 10
Vous devrez supprimer la gâchette et le recréer lors de la définition de la taille du lot sur 1. Cela peut être effectué à partir de la console Lambda.