3

私は、アプリケーションで何か起きたときに管理者に電子メールを送信するWebアプリケーションを持っています。例えば、新規ユーザが登録される。SQSまたはSNSを使用してメールを送信する

私は、アプリケーションの内部に電子メールを構築/送信するロジックがないようにしたいと考えています。むしろ、アプリケーションがキューにメッセージを発行し、電子メールを送信するために適切にリスンして反応する別のシステムがあることを望みます。

フローはそういうものでしょう。

  • アプリケーションが(?? SQS又はSNS)キュー内のメッセージをパブリッシュ
  • ラムダ関数がトリガです。ラムダはメッセージを読み取り、SESを呼び出します。
  • SESは、私はそれがこれを行うための最善の方法であるかどうかわからないんだけど、メール

を送信します。私はSQSとラムダの間にギャップがあることを読んだ。 SNSのほうがいいですか?

適切なフローは何ですか?

アプリケーション - > SQS - >ラムダ - > SES

または

アプリケーション - > SNS - >ラムダ - 他たぶん> SES

何か?

アイデアは、常にそのロジックからすべてのWebアプリケーションを抽象化することを考えてください。 Webアプリケーションは、メッセージをどこかに公開するだけです。その後、魔法はバックグラウンドで起こります。

答えて

1

通知を受け取るトピックのサブスクライバである必要があるため、Eメールの方程式からSNSを取ってください。これはAWS関連のイベント通知のためのものです。

SQSでは、Limits Related to Messagesを処理する必要があります。特殊なSDKを使用しない限り、デフォルトの最大メッセージサイズは256kbです.2GBです。

3番目のオプションを検討してください。 App - > DB - > Lambda - > SES

DB内のメールキューは簡単なテーブル構造であり、Lambdaはスケジュールまたはイベントドリブンでスキャンし、SES経由でメールを処理します。このようにして、SQSメッセージ制限はありません。

+0

私はメッセージの制限について心配していません(まだよく分かります)。このアプリは、ユーザーとしてのIDまたはトークンをメッセージとして公開するためです。電子メールの内容はどこか他の場所のテンプレートにあります。あなたはこれを知った後、あなたの推薦に固執しますか?ありがとう – osotorrio

+1

私はすぐにSNSを省略しません。これは、AWS関連の通知だけでなく、すべての通知を送信するために作成されています。イベントは、それぞれが消費されてSNS通知をトリガするSQSキューに移動できます。 SESではなくSNSを直接使用することで、通知の配信をより詳細に制御できます。たとえば、ロジックがSNSトピックを選択できる通知ルール(時刻または件名に基づく)があり、各SNSトピックに適切な電子メールアドレスが登録されているとします。 – jbird

+0

質問は、電子メールを直接送信するのではなく、ラムダ機能をトリガするためにSNSを使用することです。このシナリオでは、SNSの解雇は不当です。実際、私はSNS-> Lambda-> SESは疑問を呈している最も洗練されたばかばかしい解決策であり、ラムダのスケジュールに頼らずに提案されている唯一の解決策だと思います。 –

1

あなたの説明に基づいて、私は次のようなアーキテクチャを提案したい:

App -> SQS -> Lambda -> SES

を私はアプリからLambda機能を実行するか、労働者として定期的にそれを実行するcronを使用するSNSを使用したいですキューに入れます。 SNSは、メッセージを永続化しないpub/subサービスです。

このアーキテクチャは、メールサービスからアプリケーションを切り離し、非同期呼び出しとキューイングを提供します。大きなペイロードを送信する必要がある場合は、S3を使用してこれらのオブジェクトを保存し、SQSというメッセージのキーをLambdaに渡します。

関連する問題