このモジュールでは、Amazon Kinesis ストリームを作成し、ユニコーン車両群のセンサーデータを収集して保存します。所定のコマンドラインクライアントを使用して、Wild Ryde のユニコーンからセンサーデータを生成し、ストリームから読み取ります。最後に、ユニコーンダッシュボードを使用して、ユニコーンをマップにプロットし、リアルタイムで状態を監視します。以降の モジュール で、Amazon Kinesis Data Analytics、AWS Lambda、および Amazon DynamoDB を使用して、このデータを分析および保持する機能を追加します。

このモジュールのアーキテクチャには、Amazon Kinesis ストリーム、プロデューサー、およびコンシューマーが関係します。

プロデューサーは、現在乗客を乗せているユニコーンにアタッチされているセンサーです。このセンサーは、ユニコーンの現在の位置、前の秒に移動した距離、マジックポイントおよびヒットポイントなどのデータを毎秒出力するため、運用チームは Wild Rydes 本部からユニコーン車両群の状態をモニタリングできます。

Amazon Kinesis ストリームは、プロデューサーから送信されたデータを保存し、コンシューマーがこれらのデータの処理と分析を実行できるインターフェイスを提供します。コンシューマーは、ストリームを追いかけてリアルタイムで効果的にストリームからデータポイントを出力するシンプルなコマンドラインユーティリティです。そのため、どのデータがストリームに保存されるかを確認できます。ストリームからデータが送受信されると、ユニコーンダッシュボードを使用して、ユニコーン車両群の現在の位置と重要データをリアルタイムで確認できます。

モジュールの所要時間: 25 分

使用するサービス:
• Amazon Kinesis Data Streams
• Amazon Cognito
• AWS IAM

serverless-real-time-data-processing-mod-1
  • ステップ 1.Amazon Kinesis ストリームを作成する

    Amazon Kinesis Data Streams コンソールを使用して、wildrydes という名前の、1 シャードの新しいストリームを作成します。


    a. AWS マネジメントコンソールに移動し、[サービス] で [Analytics] の [Kinesis] を選択します。

    b.初期画面が表示されたら、[Get started] を選択します。

    c.[データストリームの作成] を選択します。

    d.Kinesis ストリーム名に「 wildrydes 」を入力し、[シャード数] に「1」を入力して、[Kinesis ストリームの作成] を選択します。

    e.60 秒以内に Kinesis ストリームがアクティブになり、リアルタイムストリーミングデータを保存する準備が整います。 

  • ステップ 2.ストリームにメッセージを生成する

    コマンドラインプロデューサーを使用して、ストリームにメッセージを生成します。


    a.お使いの Cloud9 環境が開いているタブに切り替えます。

    b.ターミナルで、プロデューサーを実行して、ストリームへのセンサーデータの 出力 を開始します。

    ./producer

    c.プロデューサーはすぐにメッセージをストリームに出力し、画面に期間を表示します。

    d.Amazon Kinesis Streams コンソールで、[ wildrydes ] をクリックしてから [モニタリング] タブをクリックします。

    e.数分後、Put Record (Bytes) — Sum グラフが 1 分あたり数千バイトの Put を記録し始めます。

  • ステップ 3.ストリームからメッセージを読み取る


    a.お使いの Cloud9 環境が開いているタブに切り替えます。

    b.[+] ボタンを押し、[New Terminal] をクリックして新しいターミナルのタブを開きます。

    c.コンシューマーを実行して、ストリームからのセンサーデータの読み取りを開始します。

    ./consumer

    d.コンシューマーは、プロデューサーから送信されるメッセージを表示します。

    {
      "Name": "Shadowfax",
      "StatusTime": "2017-06-05 09:17:08.189",
      "Latitude": 42.264444250051326,
      "Longitude": -71.97582884770408,
      "Distance": 175,
      "MagicPoints": 110,
      "HealthPoints": 150
    }
    {
      "Name": "Shadowfax",
      "StatusTime": "2017-06-05 09:17:09.191",
      "Latitude": 42.265486935100476,
      "Longitude": -71.97442977859625,
      "Distance": 163,
      "MagicPoints": 110,
      "HealthPoints": 151
    }
  • ステップ 4.ユニコーンダッシュボードの ID プールを作成する

    Amazon Cognito ID プールを作成して、Kinesis ストリームから読み取るアクセス権を未認証ユーザーに付与します。次のステップで使用するため、ID プール ID をメモしておきます。


    a.AWS マネジメントコンソールに移動し、[Services] をクリックし、[セキュリティ、アイデンティティ、コンプライアンス] の [Cognito] を選択します。

    b.[Manage Identity Pools (ID プールの管理)] を選択します。

    c.[新しい ID プールの作成] を選択します。

    d.[ID プール名] に「 wildrydes 」と入力します。

    e.[認証されていない ID に対してアクセスを有効にする] チェックボックスをオンにします。

    f.[プールの作成] をクリックします。

    g.[Allow (許可)] をクリックします。これによって、ID プール用の認証ロールと未認証ロールが作成されます。

    h.[ダッシュボードに移動] を選択します。

    i. 上隅にある [ID プールの編集] を選択します。

    j.後のステップで使用するため、ID プールの ID をメモしておきます。

    k.[Cancel] をクリックします。

  • ステップ 5.ストリームへのアクセス権を未認証ロールに付与する

    ユニコーンをマップにプロットするために、新しいポリシーを 未認証 ロールに追加して、ダッシュボードからストリームを読み取ることができるようにします。


    a.AWS マネジメントコンソールに移動し、[サービス] で [セキュリティ、アイデンティティ、コンプライアンス] の [IAM] を選択します。

    b.左側のナビゲーションで [ロール] を選択します。

    c.[Cognito_wildrydesUnauth_Role] を選択します。

    d.[Add inline policy (インラインポリシーの追加)] を選択します。

    e.[Choose a service (サービスの選択)]、[Kinesis] の順に選択します。

    f.[Actions (アクション)] セクションの [Read (読み込み)] と [List (リスト)] 権限チェックボックスをオンにします。

    g. wildrydes ストリームに対してこのロールを制限するために [Resources (リソース)] を選択します。

    h. ストリーム の横にある [Add ARN (ARN の追加)] を選択します。

    i.使用するリージョン (us-east-1 など) を [Region] に、使用するアカウント ID を [Account] に、 wildrydes を [Stream name] に入力します。

    使用しているリージョンを確認するには、コピーした Amazon Cognito ID プール ARN のプレフィックスをご参照ください。   

    AWS マネジメントコンソールで 12 桁の AWS アカウント ID 番号を確認するには、ナビゲーションバーの右上にある [Support] を選択し、[Support Center] をクリックします。現在サインインしている ID が、右上隅のサポートメニューの下に表示されます。

    j.[追加] を選択します。

    k.[ポリシーの確認] を選択します。

    l.[名前] に「wildrydesDashboardPolicy」と入力します。

    m.[ポリシーの作成] を選択します。

    streaming-data-stream-arn

    (クリックして拡大)

    streaming-data-stream-arn
  • ステップ 6.ダッシュボードにユニコーンの状態を表示する

    ユニコーンダッシュボードを使用して、リアルタイムマップでユニコーンを確認します。


    a.ユニコーンダッシュボードを開きます。

    b.ステップ 4 でメモした Cognito Identity Pool ID を入力し、[Start] をクリックします。

    c.マップにユニコーンが表示されていることを確認します。

    d.ユニコーンをクリックして、ストリームの詳細を表示します。

    unicorn_dashboard_1

    (クリックして拡大)

    unicorn_dashboard_1
  • ステップ 7.プロデューサーで実験する

    ダッシュボードとコンシューマーを監視しながら、プロデューサーを停止して開始します。さまざまなユニコーン名で複数のプロデューサーを開始します。


    a.Control + C キーを押してプロデューサーを停止すると、30 秒後にメッセージが停止し、ユニコーンが 消える ことがわかります。

    b. プロデューサーを再度開始すると、メッセージが再開され、ユニコーンが再度現れます。

    c. [+] ボタンを押して [New Terminal] をクリックし、新しいターミナルのタブを開きます。

    d. 新しいタブでプロデューサーの別のインスタンスを作成します。特定のユニコーン名を入力すると、コンシューマーの出力に両方のユニコーンのデータポイントが表示されます。

    ./producer -name Bucephalus

    e.ダッシュボードで、複数のユニコーンが表示されていることを確認します。

  • 総括とヒント


    🔑 Amazon Kinesis を使用すると、ストリーミングデータをリアルタイムで収集、処理、分析することが容易になるため、インサイトを適時に取得して新しい情報に迅速に対応できます。

    🔧 このモジュールでは、Amazon Kinesis ストリームを作成し、これを使用して、シミュレーションしたユニコーンフリートのデータを保存および可視化しました。

次のモジュールでは、ユニコーン車両群のセンサーデータをリアルタイムで集約する Amazon Kinesis Data Analytics アプリケーションを作成します。