2015-08-22 5 views
0

Je rencontre un problème étrange avec Amazon SNS. Lorsque je publie un message à l'aide de l'interface utilisateur AWS (publier sur le bouton sujet), les messages sont livrés immédiatement.AWS Lambda Publishing vers SNS

Mais lorsque je publie un message sur le même sujet à l'intérieur d'une fonction lambda, les messages ne seront pas distribués ou seront distribués après la publication d'autres messages par de futures invocations du lambda.

Qu'est-ce qui pourrait être différent?

Mise à jour

J'ai essayé de publier avec la fraîcheur AWS CLI, et qui fonctionne très bien aussi. J'utilise la bibliothèque Java SNS pour mon lambda. J'utilise les informations d'identification par défaut du lambda. Je construis le PublishRequest avec juste le sujet ARN, message et sujet. L'appel de publication retourne avec succès, et je le vois mes journaux dans les journaux de cloudwatch. Qu'est-ce qui retarderait la remise d'un message SNS jusqu'à ce que davantage de messages SNS soient envoyés? Je suis en train de tester avec les abonnements Email et SQS - les deux se comportent de la même manière.

+1

Cela peut ne pas être le cas, mais vérifiez que votre appel SNS est en cours avant la fin de la fonction Lambda. Le contenu asynchrone peut entraîner la fin de la fonction avant la fin de tous les appels. –

+0

Oui, j'attends définitivement tous mes trucs asynchrones avant de revenir. Ce qui est bizarre pour moi, c'est que les messages apparaîtront plus tard seulement après que j'enverrai plus. Presque comme ils sont tamponnés quelque part. Ce serait horrible si c'est vrai. Mais encore une fois, cela n'arrive que lorsque j'envoie le lambda. – ademartini

Répondre

2

J'ai trouvé le problème. Bien que je pensais que j'attendais la demande de publication SNS à envoyer, je ne l'étais pas en réalité. Donc, en bout de ligne, assurez-vous que votre truc asynchrone se termine dans ces lambdas ou vous pourriez voir un comportement étrange. Merci à John Rotenstein ci-dessus pour m'avoir indiqué dans la bonne direction.

+1

Une bonne explication de l'environnement AWS Lambda: https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/ –

+0

Cool, une bonne lecture, merci! – ademartini