0

データのセッションを記録するモバイル アプリケーションの構築を検討しています。データをクレンジングしてから、受信 S3 バケットにアップロードする必要があります。このバケットにイベントがあり、Lambda 関数をトリガーしてデータを処理し、送信 S3 バケットに配置します。これは、ファイルの内容が処理の結果に関する単語であるファイルの形式です。次に、この結果をデバイスに返す必要があります。できるだけ多くの AWS サービスを使用してこれを設計しようとしています。また、以前の結果を確認するために、ユーザー (デバイス) が利用できる履歴データも必要です。現時点では、次のアイデアがあります。

  • デバイスを認証する AWS Cognito
  • モバイル デバイスはデータを処理およびクレンジングし、Cognito 認証を使用してペイロード パケットを S3 受信バケットに配置し、ファイル名の一部を構成する DeviceID を使用します。
  • 処理はLamdba関数のまま、出力はテキストファイル、再びDeviceID命名規則を使用
  • 結果を DynamoDB に保存する別の Lambda 関数を使用した、送信 S3 バケットでのイベント トリガー。保存したら、最新の結果 (ステータス) をデバイスにプッシュ通知します。
  • DynamoDB を検索してすべての結果を表示し、ユーザーに送信する前に結果 (ワークフローなど) をインターセプトする可能性があるカスタム Node.js 管理アプリを備えた小さな EC2 インスタンス。管理コンソールからユーザーへの最終通知をトリガーすることも可能
  • デバイス アプリケーションは AWS SDK を使用して、DynamoDB の結果を履歴的に読み取ります
  • 将来は Elastic MapReduce を組み込んで、結果に対して複雑なクエリを実行する可能性があります

ソリューションはかなり健全なようです。私はまだ利用可能なすべての AWS サービスの速度を上げているので、明らかな何かが欠けているかどうかはわかりません.

4

2 に答える 2

1

スタンドアロン インスタンスをデプロイする代わりに、 AWS API Gatewayを組み合わせて使用​​することをお勧めします。Amazon Lambda

また、モバイル プッシュ通知にも使用することをお勧めしSNSます。これは、アーキテクチャの残りの部分と非常によく一致するためです。

于 2015-07-15T16:00:16.057 に答える
0

入力の処理を取り込みから分離しようとしない限り、S3 はこのフローに多くの価値を追加していないようです。モバイルアプリから直接 Amazon Lambda を呼び出し、結果をラムダから直接 ddb に書き込むことができます。

S3 を使用する場合は、デバイス ID よりもキーの一部として認識 ID を使用することをお勧めします。これには 2 つの利点があります。きめ細かいアクセス制御を有効にして、あるユーザーが別のユーザーの s3 オブジェクトまたは ddb の行にアクセスできないようにすることができます。また、ユーザーが複数のデバイスを持っていて、認証されたユーザーを使用している場合、ユーザーは同じものを見ることができます。モバイル デバイス間を移行するときのデータ。

于 2015-07-15T20:47:07.960 に答える