2016-07-21 10 views
2

SNS - > Lambda SNS - > SQS - > Lambdaを使用するメリットとデメリットを教えてもらえますか?AWS Pub/Subメッセージパターン

私はパブ/サブマイクロサービスメッセージングのアーキテクチャをセットアップしようとしていますが、すべてのラムダの前にキューを置いておくと余計に思えます。

答えて

4

、それがより理にかなっているのかという疑問がSNS →ラムダ、またはSNS → SQS →ラムダを展開するために、重要な欠陥との前提に基づいています。ラムダドキュメントにSupported Event Sourcesに示されているよう

、ラムダイベントはS3、DynamoDBの、キネシス、SNS、SES、Cognito、CloudFormation、CloudWatchの(スケジュールされたイベントを含む)&イベント、AWS構成、アマゾンエコー、およびから供給することができますAPIゲートウェイ。

もちろん、それらを直接呼び出すこともできます。

しかし、SQSはサポートされているLambdaイベントソースではありません。

+0

あなたは間違いなく、私は直接的なトリガーに失敗したことをお詫びします。キューの場合はラムダはスケジュールラムダでポーリングする必要があります。しかし、私はあなたが少なくとも1回SNSでLambdaに配信する方法を探していると思います – tafaju

+1

@tafaju SNSは常に登録されたLambda機能を呼び出すでしょう。ラムダ関数が正常に完了しない場合は、最大2回まで再試行されます。しかし、ラムダ関数は常に少なくとも1回は呼び出されます。 SNSとLambdaの違いは、デッドレターキューという概念がないことです。そのため、ラムダ関数が同じSNSメッセージに対して3回タイムアウトすると、そのデータを床にドロップしたばかりです。回復する方法はありません。 – idbehold

+0

@idbeholdが正しいです。 SISトピックからSambaとSQSの両方にファンアウトして、メッセージが正常に期限切れになり、Lambdaエラーが発生しない限り、SQSキューから自動的に削除されるこの場合、クリーンアッププロセスはエンキューされたメッセージを確認できます。私はこれを行うS3> SNS>ラムダ設定を持っています。ラムダ関数は、既存のオブジェクトを上書きする大規模なバッチでS3が "最終的に一貫性のある"気分になったときにエラーをスローすることがあります。 –

2

Amazon SQSは、分散アプリケーションがポーリングモデルを通じてメッセージを交換するために使用するメッセージキューサービスであり、各コンポーネントを同時に使用する必要なく、送受信コンポーネントを切り離すために使用できます。 Amazon SNSとAmazon SQSを併用することで、イベントの即時通知が必要なアプリケーションにメッセージを配信したり、他のアプリケーションが後で処理するためにAmazon SQSキューに永続化することもできます。

コンポーネントの送受信を切り離したくないだけでなく、SNSラムダとSNS-SQS-Lambdaの両方でうまく機能するように、質問でユースケースを達成したいと思うまで、何かが変更されていない限り

+0

私はどちらも達成可能で、信頼できるメッセージプラットフォームを構築するというコンテキストで特定の賛否両論を探していることに同意します。私が問題であると見ることができる唯一の項目は、SQSが信頼性の高い処理と再試行を提供するため、SNS→ラムダコンテキストでは失われる信頼性です。 – tafaju

+0

耐久性もあるので、一度すべてのメッセージがラムダatleastに一度配信されるようにしてください。 – error2007s

+0

あなたはSQSのミックスで正しいと言っていますか? – tafaju

関連する問題