2017-05-24 15 views
0

私は、スケーラブルなソリューションをどのように考え出すことができるかを見ています。あなたの助けを前もってありがとう!aws snsとlambdaを使用して定期的な通知を送信

シナリオ: ユーザーは、電子メールと電話を使用してアプリケーションにサインアップすることができます(「Let's Remind」などと呼ばれます)。 アプリは、電子メールとSMSのアラートをユーザーに送信することを1つ行います。 ユーザは、思い出させたいn個のタスクを作成することができます。たとえば、彼は月額 のカード料金を支払うためのリマインダを設定することができます。現在、nの値はユーザーあたり5から10です。 通知は柔軟性があり、毎日、毎週、毎月、隔週で行うことができます。また、ユーザーは 通知の開始日を指定することもできます。終了日は、予定されている日付です(例: )。この日付が期限切れになると、通知は現在の月の で無効になります。 毎週、毎週、隔週の通知では、イベントの日付が過ぎると通知が削除されます。 これは本質的に繰り返されるものではありません。 アパートの賃貸料などの毎月の定期的なイベントについては、通知自体は削除されていませんが、予定終了日以降は無効になります。次のイベントサイクル(通常は、支払いのケースでは 月の請求サイクル)が開始されると、通知は再び有効になり、すべて が再び開始されます。 使用すると、いつでもイベントを削除できます。イベントが削除された場合、そのイベントの通知は も削除されます。

まず、ユースケースが明確であることを願っています。今ここでこのユースケースを解決するための私の考えです -

1)私は電子メールとSMSの両方を送信する必要があるので、SNSを使用してください。 SESは電子メールのみをサポートしています。 2)ユーザーがアプリケーションに登録すると、2つのサブスクリプション(電子メール用とSMSエンドポイント用)を作成し、ユーザーのトピック(多分動的に生成されるランダムなユーザーID)を作成します 3) (例えば、毎月のアパートレンタルのリマインダー)、ユーザーID、開始日、勤続年月日、頻度、isactiveなどのイベントデータをdynamodbテーブルに格納します。 4)エントリがdynamodbテーブルに書き込まれたときに起きるラムダ関数を作成します(手順3)。 i)ダイナモブテーブル からイベントデータを読み込みます。ii)現在の日付とイベントに基づいて送信する通知の次の日付を決定します。 データ iii)アクティブなイベントの場合は、isActive (上記の手順2で作成された)ユーザーのトピックとして ターゲットを追加して、クラウドウォッチイベントで上記のiiに基づいて予定ルールcron を作成します。今のところ、通知メッセージは staticです。

手順iiiに関する疑問や質問があります。 クラウドウォッチイベントcronルールを動的に作成し、説明したように動的にユーザーのトピックをターゲットとして追加できますか?または、SNS通知を使用してユーザーのトピックにメッセージを送信するために専用の2番目のラムダ関数をトリガする方が良いでしょうか?どのユースケースがこのユースケースに適していますか? ユーザーベースが大きくなる場合、ユーザーごとに1つのトピックを作成することをお勧めしますか? 一般的にスケーラビリティの観点から私のアプローチで正しい軌道に乗っていますか? そうでない場合は、このユースケースを実装するためのより良いアイデアを提案できますか?

ありがとうございます!

+0

これは小さなユーザーでも動作します。しかし、あなたのユーザーベースが大きくなると、これは機能しません。 –

+0

だから、どのようなアプローチやawsサービスをお勧めしますか?関連するリンクや記事は参考になります。 – chakrar

+0

詳細を編集しました。この場合、私のアプローチがうまくいくかどうかは誰にも分かりますか?ありがとう。 – chakrar

答えて

0

これは機能しません。 SNS電子メールサブスクライバがSNS経由で電子メール通知を受信するには、最初にサブスクリプションを確認する必要があります。サブスクリプションをオンザフライで作成して電子メール通知を送信することはできません

私はSNSがあなたのユースケースに合っているとは思いません。 SESを使用して電子メール通知を送信する方が良いでしょう。

ラムダでスケジューリングロジックを書くことはできますが、

+0

私はSMS-esも送る必要があります。 SNSを使わないとどうすればいいですか?ユーザーが登録すると、システムはトピックとサブスクリプションエンドポイントを電子メールで設定します。確認のために電子メールが彼に送信されます。彼は購読を確認したときにのみ通知を受け取ることができます。 – chakrar

+0

サードパーティのSMSサービスを使用する必要があります。 SNSは、SMS送信機能を備えていても、要件に合っていません –

関連する問題